標籤:

vim中為什麼有那麼多map?nnoremap, vnoremap .....


noremap是不會遞歸的映射 (大概是no recursion)

例如

noremap Y y

noremap y Y

不會出現問題

前綴代表生效範圍

inoremap就只在插入(insert)模式下生效

vnoremap只在visual模式下生效

nnoremap就在normal模式下(狂按esc後的模式)生效

這樣可以減少快捷鍵所用到的鍵位組合的個數

一個組合可以有多種用途 就不用費勁心思思考 該映射哪個沒被綁定過的鍵了


在各種模式下快捷鍵映射的精準定義是非常重要的。

在對vim的各種插件添加和功能自定義期間映射快捷鍵不可避免,總不能在要實現一個簡單的功能的時候都要按&回到normal模式然後敲命令 :call function("a","b","c") 。這樣該有多麻煩呀,組合快捷鍵不但可以省時省力,隨著插件的增加命令變得越來越臃腫,在這種情況下快捷鍵也不至於不夠用。

但是在insert模式下的時候,按&鍵,是想插入"&"這個片語呢,還是想運行normal模式下對應F5映射的命令,如果不定義的話會有歧義。花一點經歷映射好符合自己使用習慣的快捷鍵,那麼多map全是為了方便你的使用提高工作效率的。


[Vim]vim的幾種模式和按鍵映射

寫得好全面


簡略回答一下:

map a b -&> 表示按 a 等於按 b。

vmap -&> (還有 nmap imap)前首字母表示不同的模式(分別對應虛擬模式,普通模式,插入模式)。

vnoremap c a -&> nore表示非遞歸 。比如我們之前設置按 a 等於按 b, 假設我們設置按 c 等於按 a 。則我們按下 c 相當於按了 b。如果是 nore 的映射,按下 c 只等於按 a。 至於前面的 v,跟第二條一樣表示不同的模式。


:help map

:help noremap

:help nnoremap

這些自己查一下就好了。


推薦閱讀:

Vim 和 Emacs 到底哪個更牛逼一點?
如何使用Notepad++和GCC搭建Windows下的C語言學習環境?
為什麼 vim 在 insert 模式下粘貼大量文本時會崩潰?
你對 Neovim 怎麼看?
如何用 vim 的插件開發?有什麼實際中的技巧?

TAG:Vim |