Vim 自動命令筆記
分類
說明
本篇文章整理較常用的 Vim 自動命令,讓讀者快速了解如何使用自動命令。
簡介
在檔案讀寫,緩衝區或視窗進出,甚至 Vim 退出等時刻,你都可以指定要自動執行的指令。
一般來說,自動命令在 .vimrc
或 .exrc
檔案中設定。
使用方式
建議使用群組的方式,使用自動命令,其方式為定義一個自動群組,在自動群組內定義自動命令,再使用自動命令啟動自動群組。
augroup mygroup
" 刪除這個 augroup 中之前定義的所有自動命令
autocmd!
" 當進入 Vim 編輯器時顯示歡迎訊息
autocmd VimEnter * echo "Welcome to Vim!"
augroup END
autocmd mygroup
當你已經啟動自動群組後,想在某些條件下刪除自動群組,記得先刪除群組之前定義的所有自動命令,再刪除群組。
" 刪除 mygroup 之前,先刪除 mygroup 所有的自動命令。
autocmd! mygroup
augroup! mygroup
大概知道如何使用後,接著就可以去了解每個命令的用法。
定義自動命令
:au[tocmd] [group] {event} {aupat} [++once] [++nested] {cmd}
把 {cmd}
加到 Vim 符合 {aupat}
模式的檔案執行 {event}
事件時自動執行的命令列表。
這裡的 {event}
不能是 “*”。
{aupat}
指的是 autocmd patterns。
刪除自動命令
:au[tocmd]! [group]
刪除所有的自動命令。
警告: 沒有給出群組時,不要輕易用本命令,會對插件、語法高亮等產生破壞。
如果沒有給予 [group]
參數,Vim 使用目前群組 (由 :augroup
定義);不然,Vim 使用 [group]
定義的群組。
範例
沒有給予 [group]
參數範例
" 刪除所有自動命令,系統會壞掉
autocmd!
augroup mygroup
" 刪除這個 augroup 中之前定義的所有自動命令
autocmd!
" 當進入 Vim 編輯器時顯示歡迎訊息
autocmd VimEnter * echo "Welcome to Vim!"
augroup END
給予 [group]
參數範例
:autocmd! mygroup
刪除 mygroup
定義的所有自動命令。
事件
查看文件 :help autocommand-events
自動命令事件按字母順序排列的列表 :help autocmd-events-abc
事件指的是 Vim 的事件,當事件觸發後就會自動執行命令。
常見事件
讀入
名稱 | 觸發條件 |
---|---|
BufNewFile | 開始編輯尚不存在的文件 |
BufReadPre | 開始編輯新緩衝區,讀入檔案前 |
雜項
名稱 | 觸發條件 |
---|---|
CursorMovedI | 插入模式下移動了遊標 |
模式
查看文件 :help autocmd-patterns
特殊符號
查看文件 :help file-pattern
這裡,模式的解釋和檔案名稱裡的模式大致相同:
符號 | 描述 |
---|---|
* |
匹配任何字元序列 |
註: 這裡只列出最常用的符號。
群組
自動命令可以被一起放在一個群組裡。這可用於刪除或執行一組自動命令。
群組命令
:aug[roup] {name}
定義其後的 :autocmd
命令所使用的自動命令群組名。
名字 “end” 或 “END” 選擇預設組。
為了避免混淆,這裡不要用和已有 {event}
名重名的名字,很可能和你想做的不同。
:aug[roup]! {name}
刪除自動命令群組 {name}
。如果還有自動命令使用該群組,不要這麼做!不然,系統會警告你。
範例
定義一個 augroup
,名為 mygroup。
" 定義一個 augroup,名為 mygroup
augroup mygroup
" 刪除這個 augroup 中之前定義的所有自動命令
autocmd!
" 當進入 Vim 編輯器時顯示歡迎訊息
autocmd VimEnter * echo "Welcome to Vim!"
augroup END
刪除 mygroup。
" 刪除 mygroup 之前,先刪除 mygroup 所有的自動命令。
autocmd! mygroup
augroup! mygroup
一杯咖啡的力量,勝過千言萬語的感謝。
支持我一杯咖啡,讓我繼續創作優質內容,與您分享更多知識與樂趣!