增強(qiáng)Vim編輯器,提高編輯效率
這 20 多個(gè)有用的命令可以增強(qiáng)你使用 Vim 的體驗(yàn)。
編者注:標(biāo)題和文章最初稱呼的 vi
編輯器,現(xiàn)已更新為編輯器的正確名稱:Vim
。
Vim
作為一款功能強(qiáng)大、選項(xiàng)豐富的編輯器,為許多用戶所熱愛。本文介紹了一些在 Vim
中默認(rèn)未啟用但實(shí)際非常有用的選項(xiàng)。雖然可以在每個(gè) Vim
會(huì)話中單獨(dú)啟用,但為了創(chuàng)建一個(gè)開箱即用的高效編輯環(huán)境,還是建議在 Vim
的配置文件中配置這些命令。
開始前的準(zhǔn)備
這里所說的選項(xiàng)或配置均位于用戶主目錄中的 Vim
啟動(dòng)配置文件 .vimrc
。 按照下面的說明在 .vimrc
中設(shè)置選項(xiàng):
(注意:vimrc
文件也用于 Linux
中的全局配置,如 /etc/vimrc
或 /etc/vim/vimrc
。本文所說的 .vimrc
均是指位于用戶主目錄中的 .vimrc
文件。)
Linux 系統(tǒng)中:
- 用
Vim
打開.vimrc
文件:vim ~/.vimrc
- 復(fù)制本文***的
選項(xiàng)列表
粘貼到.vimrc
文件 - 保存并關(guān)閉 (
:wq
)
(LCTT 譯注:此處不建議使用 Vim
編輯 .vimrc
文件,因?yàn)楹芸赡軣o法粘貼成功,可以選擇 gedit
編輯器編輯 .vimrc
文件。)
Windows 系統(tǒng)中:
- 首先,安裝 gvim
- 打開
gvim
- 單擊 “編輯” -> “啟動(dòng)設(shè)置”,打開
_vimrc
文件 - 復(fù)制本文***的 “選項(xiàng)列表” 粘貼到
_vimrc
文件 - 單擊 “文件” -> “保存”
(LCTT 譯注:此處應(yīng)注意不要使用 Windows
自帶的記事本編輯該 _vimrc
文件,否則可能會(huì)因?yàn)樾薪Y(jié)束符不同而導(dǎo)致問題。)
下面,我們將深入研究提高 Vim
編輯效率的選項(xiàng)。主要分為以下幾類:
- 縮進(jìn) & 制表符
- 顯示 & 格式化
- 搜索
- 瀏覽 & 滾動(dòng)
- 拼寫
- 其他選項(xiàng)
1. 縮進(jìn) & 制表符
使 Vim
在創(chuàng)建新行的時(shí)候使用與上一行同樣的縮進(jìn):
set autoindent
創(chuàng)建新行時(shí)使用智能縮進(jìn),主要用于 C
語言一類的程序。通常,打開 smartindent
時(shí)也應(yīng)該打開 autoindent
:
set smartindent
注意:Vim
具有語言感知功能,且其默認(rèn)設(shè)置可以基于文件中的編程語言來改變配置以提高效率。有許多默認(rèn)的配置選項(xiàng),包括 axs cindent
,cinoptions
,indentexpr
等,沒有在這里說明。 syn
是一個(gè)非常有用的命令,用于設(shè)置文件的語法以更改顯示模式。
(LCTT 譯注:這里的 syn
是指 syntax
,可用于設(shè)置文件所用的編程語言,開啟對(duì)應(yīng)的語法高亮,以及執(zhí)行自動(dòng)事件 (autocmd
)。)
設(shè)置文件里的制表符 (TAB)
的寬度(以空格的數(shù)量表示):
set tabstop=4
設(shè)置移位操作 >>
或 <<
的縮進(jìn)長(zhǎng)度(以空格的數(shù)量表示):
set shiftwidth=4
如果你更喜歡在編輯文件時(shí)使用空格而不是制表符,設(shè)置以下選項(xiàng)可以使 Vim
在你按下 Tab
鍵時(shí)用空格代替制表符。
set expandtab
注意:這可能會(huì)導(dǎo)致依賴于制表符的 Python
等編程語言出現(xiàn)問題。這時(shí),你可以根據(jù)文件類型設(shè)置該選項(xiàng)(請(qǐng)參考 autocmd
)。
2. 顯示 & 格式化
要在每行的前面顯示行號(hào):
set number
要在文本行超過一定長(zhǎng)度時(shí)自動(dòng)換行:
set textwidth=80
要根據(jù)從窗口右側(cè)向左數(shù)的列數(shù)來自動(dòng)換行:
set wrapmargin=2
(LCTT 譯注:如果 textwidth
選項(xiàng)不等于零,本選項(xiàng)無效。)
當(dāng)光標(biāo)遍歷文件時(shí)經(jīng)過括號(hào)時(shí),高亮標(biāo)識(shí)匹配的括號(hào):
set showmatch
3. 搜索
高亮搜索內(nèi)容的所有匹配位置:
set hlsearch
搜索過程中動(dòng)態(tài)顯示匹配內(nèi)容:
set incsearch
搜索時(shí)忽略大小寫:
set ignorecase
在打開 ignorecase
選項(xiàng)的條件下,搜索內(nèi)容包含部分大寫字符時(shí),要使搜索大小寫敏感:
set smartcase
例如,如果文件內(nèi)容是:
test
Test
當(dāng)打開 ignorecase
和 smartcase
選項(xiàng)時(shí),搜索 test
時(shí)的突出顯示:
test
Test
搜索 Test
時(shí)的突出顯示:
test
Test
4. 瀏覽 & 滾動(dòng)
為獲得更好的視覺體驗(yàn),你可能希望將光標(biāo)放在窗口中間而不是***行,以下選項(xiàng)使光標(biāo)距窗口上下保留 5 行。
set scrolloff=5
一個(gè)例子:
***張圖中 scrolloff=0
,第二張圖中 scrolloff=5
。
提示:如果你沒有設(shè)置選項(xiàng) nowrap
,那么設(shè)置 sidescrolloff
將非常有用。
在 Vim
窗口底部顯示一個(gè)***狀態(tài)欄,可以顯示文件名、行號(hào)和列號(hào)等內(nèi)容:
set laststatus=2
5. 拼寫
Vim
有一個(gè)內(nèi)置的拼寫檢查器,對(duì)于文本編輯和編碼非常有用。Vim
可以識(shí)別文件類型并僅對(duì)代碼中的注釋進(jìn)行拼寫檢查。使用下面的選項(xiàng)打開英語拼寫檢查:
set spell spelllang=en_us
(LCTT 譯注:中文、日文或其它東亞語字符通常會(huì)在打開拼寫檢查時(shí)被標(biāo)為拼寫錯(cuò)誤,因?yàn)槠磳憴z查不支持這些語種,可以在 spelllang
選項(xiàng)中加入 cjk
來忽略這些錯(cuò)誤標(biāo)注。)
6. 其他選項(xiàng)
禁止創(chuàng)建備份文件:?jiǎn)⒂么诉x項(xiàng)后,Vim
將在覆蓋文件前創(chuàng)建一個(gè)備份,文件成功寫入后保留該備份。如果不想保留該備份文件,可以按下面的方式關(guān)閉:
set nobackup
禁止創(chuàng)建交換文件:?jiǎn)⒂么诉x項(xiàng)后,Vim
將在編輯該文件時(shí)創(chuàng)建一個(gè)交換文件。 交換文件用于在崩潰或發(fā)生使用沖突時(shí)恢復(fù)文件。交換文件是以 .
開頭并以 .swp
結(jié)尾的隱藏文件。
set noswapfile
如果需要在同一個(gè) Vim
窗口中編輯多個(gè)文件并進(jìn)行切換。默認(rèn)情況下,工作目錄是打開的***個(gè)文件的目錄。而將工作目錄自動(dòng)切換到正在編輯的文件的目錄是非常有用的。要自動(dòng)切換工作目錄:
set autochdir
Vim
自動(dòng)維護(hù)編輯的歷史記錄,允許撤消更改。默認(rèn)情況下,該歷史記錄僅在文件關(guān)閉之前有效。Vim
包含一個(gè)增強(qiáng)功能,使得即使在文件關(guān)閉后也可以維護(hù)撤消歷史記錄,這意味著即使在保存、關(guān)閉和重新打開文件后,也可以撤消之前的更改。歷史記錄文件是使用 .un~
擴(kuò)展名保存的隱藏文件。
set undofile
錯(cuò)誤信息響鈴,只對(duì)錯(cuò)誤信息起作用:
set errorbells
如果你愿意,還可以設(shè)置錯(cuò)誤視覺提示:
set visualbell
驚喜
Vim
提供長(zhǎng)格式和短格式命令,兩種格式都可用于設(shè)置或取消選項(xiàng)配置。
autoindent
選項(xiàng)的長(zhǎng)格式是:
set autoindent
autoindent
選項(xiàng)的短格式是:
set ai
要在不更改選項(xiàng)當(dāng)前值的情況下查看其當(dāng)前設(shè)置,可以在 Vim
的命令行上使用在末尾加上 ?
的命令:
set autoindent?
在大多數(shù)選項(xiàng)前加上 no
前綴可以取消或關(guān)閉選項(xiàng):
set noautoindent
可以為單獨(dú)的文件配置選項(xiàng),而不必修改全局配置文件。需要的話,請(qǐng)打開文件并輸入 :
,然后鍵入 set
命令。這樣的話,配置僅對(duì)當(dāng)前的文件編輯會(huì)話有效。
使用命令行獲取幫助:
:help autoindent
注意:此處列出的命令僅對(duì) Linux 上的 Vim 7.4 版本和 Windows 上的 Vim 8.0 版本進(jìn)行了測(cè)試。
這些有用的命令肯定會(huì)增強(qiáng)您的 Vim
使用體驗(yàn)。你會(huì)推薦哪些其他有用的命令?
選項(xiàng)列表
復(fù)制該選項(xiàng)列表粘貼到 .vimrc
文件中:
" Indentation & Tabs
set autoindent
set smartindent
set tabstop=4
set shiftwidth=4
set expandtab
set smarttab
" Display & format
set number
set textwidth=80
set wrapmargin=2
set showmatch
" Search
set hlsearch
set incsearch
set ignorecase
set smartcase
" Browse & Scroll
set scrolloff=5
set laststatus=2
" Spell
set spell spelllang=en_us
" Miscellaneous
set nobackup
set noswapfile
set autochdir
set undofile
set visualbell
set errorbells