標籤:des style http color 使用 ar 檔案 div sp
Map是Vim強大的一個重要原因,可以自訂各種快速鍵,用起來自然得心應手。
vim裡最基本的map用法也就是
這裡把c映射成了a,在map生效的情況下,按下c就等同於按下了a
當然,常用的Ctrl,Shift,Alt自然也是支援的。
到此,我們已經可以做很多事情了。
但是map命令遠不只這一種,在不同的模式下,同一組按鍵可以被映射到不同的組合上。
Vim的模式眾多,但是一般被提及的也就是這麼幾種:
- Normal Mode
也就是最一般的普通模式,預設進入vim之後,處於這種模式。
- Visual Mode
一般譯作可視模式,在這種模式下選定一些字元、行、多列。
在普通模式下,可以按v進入。
- Insert Mode
插入模式,其實就是指處在編輯輸入的狀態。普通模式下,可以按i進入。
- Select Mode
在gvim下常用的模式,可以叫作選擇模式吧。用滑鼠拖選地區的時候,就進入了選擇模式。
和可視模式不同的是,在這個模式下,選擇完了高亮地區後,敲任何按鍵就直接輸入並替換選擇的文本了。
和windows下的編輯器選定編輯的效果一致。普通模式下,可以按gh進入。
- Command-Line/Ex Mode
就叫命令列模式和Ex模式吧。兩者略有不同,普通模式下按冒號(:)進入Command-Line模式,可以輸入各種命令,
使用vim的各種強大功能。普通模式下按Q進入Ex模式,其實就是多行的Command-Line模式。
對於Map,有幾個基本的概念
同Vim下的其他命令一樣,命令的名字往往由好幾段組成。首碼作為命令本身的修飾符,微調命令的效果。
對於map而言,可能有這麼幾種首碼
表示非遞迴,見下面的介紹
表示在普通模式下生效
表示在可視模式下生效
表示在插入模式下生效
表示在命令列模式下生效
遞迴的映射。其實很好理解,也就是如果鍵a被映射成了b,c又被映射成了a,如果映射是遞迴的,那麼c就被映射成了b。
對於c效果等同於
預設的map就是遞迴的。如果遇到[nore]這種首碼,比如:noremap,就表示這種map是非遞迴的。
unmap後面跟著一個按鍵組合,表示刪除這個映射。
那麼在map生效模式下,c不再被映射到a上。
同樣,unmap可以加各種首碼,表示影響到的模式。
mapclear直接清除相關模式下的所有映射。
同樣,mapclear可以加各種首碼,表示影響到的模式。
這裡列出常用的一些map命令,預設map命令影響到普通模式和可視模式。
:map :noremap :unmap :mapclear
:nmap :nnoremap :nunmap :nmapclear
:vmap :vnoremap :vunmap :vmapclear
:imap :inoremap :iunmap :imapclear
:cmap :cnoremap :cunmap :cmapclear
可以試試這些命令
- 命令列模式下建一個mapping
nmap b a
- 現在普通模式下,按b,可以進入插入模式,隨便輸入一些字元
- 命令列模式下建一個mapping
vmap b d
- 現在普通模式下,按V,進入了可視模式,並且選定了一整行,按下b,可以刪除整行
- 命令列模式下建一個mapping
imap b a
- 現在試著給正在編輯的這個檔案輸入一個字元”b”吧 :p
- 命令列模式下建一個mapping
cmap b c
- 命令列模式下, 按下b,會出來一個a
好了,到此vim的按鍵已經被你弄得亂七八糟了,試著用unmap和mapclear清除這些mapping吧。:]
轉自:http://haoxiang.org/2011/09/vim-modes-and-mappin/
VIM進階學習之幾種模式和按鍵映射