Vim 自定義補全利器 Snippet


Vim Snippet 設置

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

kTuW79.gif

安裝方法很簡單,在 ~/.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

效果顯示如下:
kTu5fx.gif

這里面$1, $2, $3代表了不同的變量,按照變量順序,我們可以實現在變量之間的自動跳轉。
<c-j> 向后跳轉, <c-k> 向前跳轉。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM