Vim 自動命令筆記


建立時間: 2024年6月19日 08:56
更新時間: 2024年6月21日 08:22

說明

本篇文章整理較常用的 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
觀看次數: 409
autocmdscriptvim自動命令腳本
按讚追蹤 Enjoy 軟體 Facebook 粉絲專頁
每週分享資訊技術

一杯咖啡的力量,勝過千言萬語的感謝。

支持我一杯咖啡,讓我繼續創作優質內容,與您分享更多知識與樂趣!