首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> C++ 入門

Vim 代碼片段插件 UltiSnips 寫法詳解:從基礎語法到 Python 擴展

     編輯:C++ 入門

UltiSnips 基礎結構

片段文件放置於 ~/.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 個欄位內容進行替換(如首字母大寫)。

Shell 命令嵌入


snippet date "Current date" b
    `date +%Y-%m-%d`
endsnippet

反引號內執行 Shell 命令,輸出直接插入。

Vimscript 嵌入


snippet func "Function template"
    function! ${1:name}()
        ${2:`=expand('%:t:r')`}
    endfunction
endsnippet

!v 後跟 Vim 表達式,= 表示計算表達式值。

Python 腳本嵌入(強大擴展)


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 即可引用同一內容。
  • 條件片段:結合 Python 判斷上下文(如在類內/外)動態生成不同代碼。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved