增強 Vim 編輯器,提高編輯效率
編者註:標題和文章最初稱呼的 vi
編輯器,現已更新為編輯器的正確名稱:Vim
。
Vim
作為一款功能強大、選項豐富的編輯器,為許多用戶所熱愛。本文介紹了一些在 Vim
中默認未啟用但實際非常有用的選項。雖然可以在每個 Vim
會話中單獨啟用,但為了創建一個開箱即用的高效編輯環境,還是建議在 Vim
的配置文件中配置這些命令。
開始前的準備
這裡所說的選項或配置均位於用戶主目錄中的 Vim
啟動配置文件 .vimrc
。 按照下面的說明在 .vimrc
中設置選項:
(注意:vimrc
文件也用於 Linux
中的全局配置,如 /etc/vimrc
或 /etc/vim/vimrc
。本文所說的 .vimrc
均是指位於用戶主目錄中的 .vimrc
文件。)
Linux 系統中:
- 用
Vim
打開.vimrc
文件:vim ~/.vimrc
- 複製本文最後的
選項列表
粘貼到.vimrc
文件 - 保存並關閉 (
:wq
)
(LCTT 譯註:此處不建議使用 Vim
編輯 .vimrc
文件,因為很可能無法粘貼成功,可以選擇 gedit
編輯器編輯 .vimrc
文件。)
Windows 系統中:
- 首先,安裝 gvim
- 打開
gvim
- 單擊 「編輯」 -> 「啟動設置」,打開
_vimrc
文件 - 複製本文最後的 「選項列表」 粘貼到
_vimrc
文件 - 單擊 「文件」 -> 「保存」
(LCTT 譯註:此處應注意不要使用 Windows
自帶的記事本編輯該 _vimrc
文件,否則可能會因為行結束符不同而導致問題。)
下面,我們將深入研究提高 Vim
編輯效率的選項。主要分為以下幾類:
- 縮進 & 製表符
- 顯示 & 格式化
- 搜索
- 瀏覽 & 滾動
- 拼寫
- 其他選項
1. 縮進 & 製表符
使 Vim
在創建新行的時候使用與上一行同樣的縮進:
set autoindent
創建新行時使用智能縮進,主要用於 C
語言一類的程序。通常,打開 smartindent
時也應該打開 autoindent
:
set smartindent
注意:Vim
具有語言感知功能,且其默認設置可以基於文件中的編程語言來改變配置以提高效率。有許多默認的配置選項,包括 axs cindent
,cinoptions
,indentexpr
等,沒有在這裡說明。 syn
是一個非常有用的命令,用於設置文件的語法以更改顯示模式。
(LCTT 譯註:這裡的 syn
是指 syntax
,可用於設置文件所用的編程語言,開啟對應的語法高亮,以及執行自動事件 (autocmd
)。)
設置文件里的製表符 (TAB)
的寬度(以空格的數量表示):
set tabstop=4
設置移位操作 >>
或 <<
的縮進長度(以空格的數量表示):
set shiftwidth=4
如果你更喜歡在編輯文件時使用空格而不是製表符,設置以下選項可以使 Vim
在你按下 Tab
鍵時用空格代替製表符。
set expandtab
注意:這可能會導致依賴於製表符的 Python
等編程語言出現問題。這時,你可以根據文件類型設置該選項(請參考 autocmd
)。
2. 顯示 & 格式化
要在每行的前面顯示行號:
set number
要在文本行超過一定長度時自動換行:
set textwidth=80
要根據從窗口右側向左數的列數來自動換行:
set wrapmargin=2
(LCTT 譯註:如果 textwidth
選項不等於零,本選項無效。)
當游標遍歷文件時經過括弧時,高亮標識匹配的括弧:
set showmatch
3. 搜索
高亮搜索內容的所有匹配位置:
set hlsearch
搜索過程中動態顯示匹配內容:
set incsearch
搜索時忽略大小寫:
set ignorecase
在打開 ignorecase
選項的條件下,搜索內容包含部分大寫字元時,要使搜索大小寫敏感:
set smartcase
例如,如果文件內容是:
test
Test
當打開 ignorecase
和 smartcase
選項時,搜索 test
時的突出顯示:
test
Test
搜索 Test
時的突出顯示:
test
Test
4. 瀏覽 & 滾動
為獲得更好的視覺體驗,你可能希望將游標放在窗口中間而不是第一行,以下選項使游標距窗口上下保留 5 行。
set scrolloff=5
一個例子:
第一張圖中 scrolloff=0
,第二張圖中 scrolloff=5
。
提示:如果你沒有設置選項 nowrap
,那麼設置 sidescrolloff
將非常有用。
在 Vim
窗口底部顯示一個永久狀態欄,可以顯示文件名、行號和列號等內容:
set laststatus=2
5. 拼寫
Vim
有一個內置的拼寫檢查器,對於文本編輯和編碼非常有用。Vim
可以識別文件類型並僅對代碼中的注釋進行拼寫檢查。使用下面的選項打開英語拼寫檢查:
set spell spelllang=en_us
(LCTT 譯註:中文、日文或其它東亞語字元通常會在打開拼寫檢查時被標為拼寫錯誤,因為拼寫檢查不支持這些語種,可以在 spelllang
選項中加入 cjk
來忽略這些錯誤標註。)
6. 其他選項
禁止創建備份文件:啟用此選項後,Vim
將在覆蓋文件前創建一個備份,文件成功寫入後保留該備份。如果不想保留該備份文件,可以按下面的方式關閉:
set nobackup
禁止創建交換文件:啟用此選項後,Vim
將在編輯該文件時創建一個交換文件。 交換文件用於在崩潰或發生使用衝突時恢復文件。交換文件是以 .
開頭並以 .swp
結尾的隱藏文件。
set noswapfile
如果需要在同一個 Vim
窗口中編輯多個文件並進行切換。默認情況下,工作目錄是打開的第一個文件的目錄。而將工作目錄自動切換到正在編輯的文件的目錄是非常有用的。要自動切換工作目錄:
set autochdir
Vim
自動維護編輯的歷史記錄,允許撤消更改。默認情況下,該歷史記錄僅在文件關閉之前有效。Vim
包含一個增強功能,使得即使在文件關閉後也可以維護撤消歷史記錄,這意味著即使在保存、關閉和重新打開文件後,也可以撤消之前的更改。歷史記錄文件是使用 .un~
擴展名保存的隱藏文件。
set undofile
錯誤信息響鈴,只對錯誤信息起作用:
set errorbells
如果你願意,還可以設置錯誤視覺提示:
set visualbell
驚喜
Vim
提供長格式和短格式命令,兩種格式都可用於設置或取消選項配置。
autoindent
選項的長格式是:
set autoindent
autoindent
選項的短格式是:
set ai
要在不更改選項當前值的情況下查看其當前設置,可以在 Vim
的命令行上使用在末尾加上 ?
的命令:
set autoindent?
在大多數選項前加上 no
前綴可以取消或關閉選項:
set noautoindent
可以為單獨的文件配置選項,而不必修改全局配置文件。需要的話,請打開文件並輸入 :
,然後鍵入 set
命令。這樣的話,配置僅對當前的文件編輯會話有效。
使用命令行獲取幫助:
:help autoindent
注意:此處列出的命令僅對 Linux 上的 Vim 7.4 版本和 Windows 上的 Vim 8.0 版本進行了測試。
這些有用的命令肯定會增強您的 Vim
使用體驗。你會推薦哪些其他有用的命令?
選項列表
複製該選項列表粘貼到 .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
via: https://opensource.com/article/18/9/vi-editor-productivity-powerhouse
作者:Girish Managoli 選題:lujun9972 譯者:idea2act 校對:apemost, wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive