Vim Snippet 設置
本人是 vim 用戶,可以說能不用 IDE 就不用 IDE。
Snippet 是一種支持用戶自定義補全的需求,在 vim 中,可以使用 UltiSnips 和 Vim-Snippets 兩個插件進行補全。UltiSnips 類似於一個替換引擎,本身是沒有任何補全規則的,而 Vim-Snippets 則提供了各種各樣的 snippets。
具體效果如下

安裝方法很簡單,在 ~/.vimrc 中加入
Plugin 'SirVer/ultisnips'
Plugin 'honza/vim-snippets'
安裝好之后,默認展開是 <tab> ,我們還可以使用let g:UltiSnipsExpandTrigger = key 來定義自己想要展開的鍵。
一些常用的展開:
incc => #include<iostream>
inc => #include<stdio.h>
cout => cout << ... << endl
UltiSnips同時還支持我們自定義代碼塊補全,方法也很簡單。
Step1:
在 ~/.vim/ 下創建一個文件夾為 UltiSnips 用來存放我們自定義的補全,創建一個文件名為 語言.snippets 的文件,這個語言即會在某個具體的語言生效。比如,需要創建一個用來補全 C 語言的文件,那文件名就是 c.snippets,創建一個用來補全 Cpp 的文件,那文件名就是 cpp.snippets
Step2:
語法規則:每一個展開規則都類似於如下的樣式。
snippet 縮寫 “描述” 設定
展開后的代碼
endsnippet
例如,如果我想對 #define 進行縮寫,想要達到的效果是輸入def,即可自動展開。那么,應該如下編寫
snippet def "define" b
#define
endsnippet
設定的選項有介紹以下幾種:
b這個關鍵詞只有出現在行首的時候,才能被展開。A代表自動展開i表示可以護綠前后的字節,直接展開關鍵詞。
查看更多的選項設置可以在 ultisnip 文檔查看。
Step3
我們還可以設定一些,自動跳轉和同步顯示的高級玩法。
snippet for "for loop" b
for (int ${1:i} = $2; $1 < $3; $1++){
$4
}
endsnippet
這里面$1, $2, $3代表了不同的變量,按照變量順序,我們可以實現在變量之間的自動跳轉。
<c-j> 向后跳轉, <c-k> 向前跳轉。

