2009年12月19日 星期六

Vim script

按鍵對應

[實例] :map <F5> bi{<Esc>ea}<Esc>
這樣一來,只要在英文單字任意處按 F5,這個英文單字的前後就會加上大括號。

說明如下:
bi{<Esc> 按 b 移至英文單字的第一個字母處,並按 i 進入插入模式,寫入 { 這個字元,並按 Esc 鍵,回復常態模式。
e 移動至這個英文單字的最後一個字母處。
a}<Esc> 進入插入 append 模式,並輸入 } 這個字元,再回到常態模式。

需注意的是,在命令列模式前頭會有個冒號,因為在 vim 裡頭,要按個冒號才會進入命令列模式。但如果是設在 Vim script 檔裡頭當然就沒有冒號了。以上的例子也是可以對應至一些較容易記憶的按鍵,例如:

map ,b bi{<Esc>ea}<Esc>

這樣按 ``,b'' 就會有同樣的作用,但 ``,'' 及 ``b'' 之間不能相隔太久的時間,這樣 Vim 才會知道這兩個按鍵是結合在一起的。而 b 在此就代表 braces(大括號)。

如果要知道目前的按鍵對應的情形,可 :map 就會列出所有的目前按鍵對應,前面標示的記號就是各種模式的代表字母,例如 n 代表 normal,i 代表 insert。

縮寫對應
縮寫對應是把一長串的字串對應到簡單的幾個代表性字串。縮寫的對應只能用在插入模式、取代模式及命令列模式。主要用於輸入時節省時間及避免拼錯。這裡利用例子來做說明:

[實例] :ab gl GNU Linux
把 gl 這個按鍵對應成 GNU Linux。

ab 是 abbreviate 的縮寫,這樣一來,在插入模式時,只要輸入 gl,再按 Sapce 鍵或 Ctril+],這個 gl 就會變成 GNU Linux 這個字串。SapceCtril+] 的區別在於前者會多留個空白,方便繼續輸入其他文字;而後者則不會多留個空白。要注意的是,這在取代模式、命令列模式也是可以作用,如果是使用 :ia[bbrev],那只會在插入模式及取代模式有作用。

以下是一些常會用到的指令:

:ab[breviate] 不接任何參數,這會列出目前所有的縮寫對應。其中標有 `i' 的,代表作用於插入模式;標有 `c' 的,代表作用於命令列模式;標有 `!' 的,則兩種模式皆有作用。
:ab gl 這會列出 gl 是對應成什麼字串。
:una[bbreviate] gl 取消 gl 這個對應。
:ia[bbrev] 和 :ab 的定義一樣,但只作用於插入模式。
:cb[bbrev] 和 :ab 的定義一樣,但只作用於命令列模式。
:norea[bbrev] 用於防止重對應已有對應的字串。
:abc[lear] 取消所有由 :ab 所定義的對應。
:iabc[lear] 取消所有由 :ia 所定義的對應。
:cabc[lear] 取消所有由 :ca 所定義的對應。

" 設定加入函式註解的快速鍵(F5)
nmap <F5> o<Home>/*++^M^M<Home>Routine Description:^M<Home>  Description context^M^M<Home>Arguments:^M<Home>  Variable                  - the description for variable^M^M<Home>Returns:^M<Home>  EFI_SUCCESS               - operation successfully^M^M<Home>--*/<Esc>
其中^M是表示Enter動作,需要用Ctrl+v+M產生出來,其中nmap是表示只有在normal才會有作用,另外,要注意的是,上面的所有資料都是在同一行

[2010.10.10 補充]
設定在visual mode時有效的map
vunmap

參考資料:
Vim script 簡介

沒有留言: