片段文件放置於 ~/.vim/UltiSnips/{filetype}.snippets,命令 :UltiSnipsEdit 快速編輯。
snippet "description"
${1:placeholder} ${2:another}
${1/pattern/replacement/flags}
endsnippet
trigger:觸發關鍵字。description:補全菜單顯示的說明。options:如 b(單詞邊界)、r(正則觸發)。${n:default}:第 n 個跳轉點,帶默認值。${n/regex/repl/}:對第 n 個欄位內容進行替換(如首字母大寫)。
snippet date "Current date" b
`date +%Y-%m-%d`
endsnippet
反引號內執行 Shell 命令,輸出直接插入。
snippet func "Function template"
function! ${1:name}()
${2:`=expand('%:t:r')`}
endfunction
endsnippet
!v 後跟 Vim 表達式,= 表示計算表達式值。
global !p
import datetime
def current_year():
return str(datetime.date.today().year)
endglobal
snippet copyright "Copyright header"
// Copyright ${1:Company} `!p current_year()`
endsnippet
global !p 定義全局 Python 代碼,片段中用 `!p expr` 調用。可用變量:
snip.fn:文件名snip.path:文件路徑t[1]:第 1 個欄位文本
snippet "def (\w+)" "Function with args" r
def ${1}(${2}):
${3:pass}
endsnippet
r 選項啟用正則觸發,match.group(1) 可在 Python 中獲取捕獲組。
extends cpp
在當前文件類型片段中繼承 C++ 通用片段,避免重複定義。
${1} 出現多處,輸入一次同步修改。${1} 定義後,後續直接寫 $1 即可引用同一內容。