1. 程式人生 > >教你如何配置VIM,讓你的VIM編輯器更高效

教你如何配置VIM,讓你的VIM編輯器更高效

讓你的VIM編輯器更高效的配置讓你的VIM編輯器更高效的配置

這 20 多個有用的命令可以增強你使用 Vim 的體驗,學會它對你的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
  • 單擊 “編輯” -> “啟動設定”,開啟 _vimrc
    檔案
  • 複製本文最後的 “選項列表” 貼上到 _vimrc 檔案
  • 單擊 “檔案” -> “儲存”

(LCTT 譯註:此處應注意不要使用 Windows 自帶的記事本編輯該 _vimrc 檔案,否則可能會因為行結束符不同而導致問題。)

下面,我們將深入研究提高 Vim 編輯效率的選項。主要分為以下幾類:

  1. 縮排 & 製表符
  2. 顯示 & 格式化
  3. 搜尋
  4. 瀏覽 & 滾動
  5. 拼寫
  6. 其他選項

1. 縮排 & 製表符

使 Vim 在建立新行的時候使用與上一行同樣的縮排:

  1. set autoindent

建立新行時使用智慧縮排,主要用於 C

語言一類的程式。通常,開啟 smartindent 時也應該開啟 autoindent

  1. set smartindent

注意:Vim 具有語言感知功能,且其預設設定可以基於檔案中的程式語言來改變配置以提高效率。有許多預設的配置選項,包括 axs cindentcinoptionsindentexpr 等,沒有在這裡說明。 syn 是一個非常有用的命令,用於設定檔案的語法以更改顯示模式。

(LCTT 譯註:這裡的 syn 是指 syntax,可用於設定檔案所用的程式語言,開啟對應的語法高亮,以及執行自動事件 (autocmd)。)

設定檔案裡的製表符 (TAB) 的寬度(以空格的數量表示):

  1. set tabstop=4

設定移位操作 >><< 的縮排長度(以空格的數量表示):

  1. set shiftwidth=4

如果你更喜歡在編輯檔案時使用空格而不是製表符,設定以下選項可以使 Vim 在你按下 Tab 鍵時用空格代替製表符。

  1. set expandtab

注意:這可能會導致依賴於製表符的 Python 等程式語言出現問題。這時,你可以根據檔案型別設定該選項(請參考 autocmd)。

2. 顯示 & 格式化

要在每行的前面顯示行號:

  1. set number

要在文字行超過一定長度時自動換行:

  1. set textwidth=80

要根據從視窗右側向左數的列數來自動換行:

  1. set wrapmargin=2

(LCTT 譯註:如果 textwidth 選項不等於零,本選項無效。)

當游標遍歷檔案時經過括號時,高亮標識匹配的括號:

  1. set showmatch

3. 搜尋

高亮搜尋內容的所有匹配位置:

  1. set hlsearch

搜尋過程中動態顯示匹配內容:

  1. set incsearch

搜尋時忽略大小寫:

  1. set ignorecase

在開啟 ignorecase 選項的條件下,搜尋內容包含部分大寫字元時,要使搜尋大小寫敏感:

  1. set smartcase

例如,如果檔案內容是:

  1. test
  2. Test

當開啟 ignorecasesmartcase 選項時,搜尋 test 時的突出顯示:

test Test

搜尋 Test 時的突出顯示:

test Test

4. 瀏覽 & 滾動

為獲得更好的視覺體驗,你可能希望將游標放在視窗中間而不是第一行,以下選項使游標距視窗上下保留 5 行。

  1. set scrolloff=5

一個例子:

第一張圖中 scrolloff=0,第二張圖中 scrolloff=5

提示:如果你沒有設定選項 nowrap,那麼設定 sidescrolloff 將非常有用。

Vim 視窗底部顯示一個永久狀態列,可以顯示檔名、行號和列號等內容:

  1. set laststatus=2

5. 拼寫

Vim 有一個內建的拼寫檢查器,對於文字編輯和編碼非常有用。Vim 可以識別檔案型別並僅對程式碼中的註釋進行拼寫檢查。使用下面的選項開啟英語拼寫檢查:

  1. set spell spelllang=en_us

(LCTT 譯註:中文、日文或其它東亞語字元通常會在開啟拼寫檢查時被標為拼寫錯誤,因為拼寫檢查不支援這些語種,可以在 spelllang 選項中加入 cjk 來忽略這些錯誤標註。)

6. 其他選項

禁止建立備份檔案:啟用此選項後,Vim 將在覆蓋檔案前建立一個備份,檔案成功寫入後保留該備份。如果不想保留該備份檔案,可以按下面的方式關閉:

  1. set nobackup

禁止建立交換檔案:啟用此選項後,Vim 將在編輯該檔案時建立一個交換檔案。 交換檔案用於在崩潰或發生使用衝突時恢復檔案。交換檔案是以 . 開頭並以 .swp 結尾的隱藏檔案。

  1. set noswapfile

如果需要在同一個 Vim 視窗中編輯多個檔案並進行切換。預設情況下,工作目錄是開啟的第一個檔案的目錄。而將工作目錄自動切換到正在編輯的檔案的目錄是非常有用的。要自動切換工作目錄:

  1. set autochdir

Vim 自動維護編輯的歷史記錄,允許撤消更改。預設情況下,該歷史記錄僅在檔案關閉之前有效。Vim 包含一個增強功能,使得即使在檔案關閉後也可以維護撤消歷史記錄,這意味著即使在儲存、關閉和重新開啟檔案後,也可以撤消之前的更改。歷史記錄檔案是使用 .un~ 副檔名儲存的隱藏檔案。

  1. set undofile

錯誤資訊響鈴,只對錯誤資訊起作用:

  1. set errorbells

如果你願意,還可以設定錯誤視覺提示:

  1. set visualbell

驚喜

Vim 提供長格式和短格式命令,兩種格式都可用於設定或取消選項配置。

autoindent 選項的長格式是:

  1. set autoindent

autoindent 選項的短格式是:

  1. set ai

要在不更改選項當前值的情況下檢視其當前設定,可以在 Vim 的命令列上使用在末尾加上 ? 的命令:

  1. set autoindent?

在大多數選項前加上 no 字首可以取消或關閉選項:

  1. set noautoindent

可以為單獨的檔案配置選項,而不必修改全域性配置檔案。需要的話,請開啟檔案並輸入 :,然後鍵入 set命令。這樣的話,配置僅對當前的檔案編輯會話有效。

使用命令列獲取幫助:

  1. :help autoindent

注意:此處列出的命令僅對 Linux 上的 Vim 7.4 版本和 Windows 上的 Vim 8.0 版本進行了測試。

這些有用的命令肯定會增強您的 Vim 使用體驗。你會推薦哪些其他有用的命令?

選項列表

複製該選項列表貼上到 .vimrc 檔案中:

  1. " Indentation & Tabs
  2. set autoindent
  3. set smartindent
  4. set tabstop=4
  5. set shiftwidth=4
  6. set expandtab
  7. set smarttab
  8. "Display& format
  9. set number
  10. set textwidth=80
  11. set wrapmargin=2
  12. set showmatch
  13. " Search
  14. set hlsearch
  15. set incsearch
  16. set ignorecase
  17. set smartcase
  18. "Browse&Scroll
  19. set scrolloff=5
  20. set laststatus=2
  21. " Spell
  22. set spell spelllang=en_us
  23. "Miscellaneous
  24. set nobackup
  25. set noswapfile
  26. set autochdir
  27. set undofile
  28. set visualbell
  29. set errorbells