配置高效的 VIM 開發環境
vim 是一款功能強大的通用編輯器,它提供了一組豐富的命令,成為眾多使用者的編輯器首選。本文將介紹 vim 中預設未被啟用但仍然十分有用的命令。雖然我們可以在每個 vim 會話中單獨啟用這些命令,但本文的目的是建立一個開箱即用的高效率開發環境,所以建議將這些命令配置在 vim 配置檔案中。
在開始之前
這裡討論的命令或配置屬於 vim 啟動配置檔案 vimrc,這個檔案位於使用者主目錄中。可以按照以下說明在 vimrc 中設定命令:
(注意:在 Linux 上,vimrc 檔案也被用於系統範圍的配置,例如 /etc/vimrc 或 /etc/vim/vimrc。在本文中,我們只考慮存在於使用者主目錄中特定於使用者的 vimrc。)
在 Linux 上:
- 使用 vi $HOME/.vimrc 開啟檔案;
- 將末尾給出的命令輸入或複製 / 貼上到檔案中;
- 儲存並關閉(:wq)。
在 Windows 上:
- 首先,安裝 gvim;
- 開啟 gvim;
- 單擊 Edit --> Startup settings,開啟 _vimrc 檔案;
- 將末尾給出的命令輸入或複製 / 貼上到檔案中;
- 單擊 File --> Save。
現在讓我們深入研究各個 vi 命令。這些命令可以分為以下幾類:
- 縮排和 Tab;
- 顯示和格式化;
- 搜尋;
- 瀏覽和滾動;
- 拼寫;
- 雜項。
1. 縮排和 Tab
自動對齊檔案中行的縮排:
複製程式碼
setautoindent
智慧縮排使用了程式碼語法和樣式來對齊:
複製程式碼
setsmartindent
提示:vim 具有語言感知功能,並根據檔案中所使用的程式語言提供了預設的設定,讓工作更高效。有很多預設配置命令,包括 axs cindent、cinoptions、indentexpr 等,這裡就不做進一步的介紹。syn 是一個有用的命令,用於顯示或設定檔案語法。
設定 Tab 的空格數量:
複製程式碼
settabstop=4
設定“移位操作”(例如“>>”或“<<”)的空格數量:
複製程式碼
setshiftwidth=4
如果你更喜歡使用空格而不是製表符,那麼在按下 Tab 鍵時將插入空格。對於依賴製表符而不是空格的語言(如 Python)這可能是個問題。對於這種情況,你可以根據檔案型別來設定這個選項。
複製程式碼
setexpandtab
2. 顯示和格式化
要顯示行號:
複製程式碼
setnumber
在文字超過最大寬度時換行:
複製程式碼
settextwidth= 80
根據距離右邊的列數來換行:
複製程式碼
setwrapmargin= 2
在遍歷檔案時識別括弧的起始和結束位置:
複製程式碼
setshowmatch
3. 搜尋
在檔案中高亮顯示搜尋關鍵詞:
複製程式碼
sethlsearch
進行增量搜尋:
複製程式碼
setincsearch
搜尋時忽略大小寫(很多使用者選擇不使用這個命令,不過可以在你認為有用時設定它):
複製程式碼
setignorecase
在設定了 ignorecase 和 smartcase 並且搜尋關鍵字包含大寫字母時,搜尋時不考慮 ignorecase:
複製程式碼
setsmartcase
例如,如果檔案中包含:
test
Test
當設定了 ignorecase 和 smartcase,搜尋“test”會找到並突出顯示 test 和 Test。搜尋“Test”只突出顯示或只找到第二 Test。
4. 瀏覽和滾動
為了獲得更好的視覺體驗,你可能更喜歡將游標放在中間的位置而不是第一行。設定下面的選項可以將游標位置設定為第 5 行。
複製程式碼
setscrolloff= 5
例如:
第一張影象的 scrolloff = 0,第二張影象的 scrolloff = 5。
提示:如果你設定了 nowrap,那麼 set sidescrolloff 會非常有用。
在 vim 螢幕底部顯示永久的狀態列,用於顯示檔名、行號、列號等:
複製程式碼
setlaststatus= 2
5. 拼寫
vim 有一個內建的拼寫檢查器,在編輯文字和些程式碼時非常有用。vim 會識別檔案型別並檢查程式碼註釋的拼寫情況。可以使用以下命令開啟英語拼寫檢查:
複製程式碼
setspellspelllang = en_us
6. 雜項
禁用備份檔案:如果啟用了這個選項,vim 將為上一次編輯建立備份。如果你不想要這個功能,請像下面那樣將其禁用。備份檔案的檔名末尾有個波浪號(~)。
複製程式碼
setnobackup
禁用交換檔案:如果啟用了這個選項,vim 會建立一個交換檔案,直到你開始編輯檔案。在發生崩潰或衝突時,交換檔案用於恢復檔案。交換檔案是隱藏檔案,以. 開頭,並以.swp 結尾。
複製程式碼
setnoswapfile
假設你需要在同一個 vim 會話中編輯多個檔案,並在它們之間切換。問題是,工作目錄通常是你開啟第一個檔案的那個目錄。所以,將工作目錄自動切換到正在編輯的檔案所在的目錄是很有用的。可以啟用這個選項:
複製程式碼
setautochdir
vim 維護了一個撤消歷史記錄,允許你撤消更改。預設情況下,歷史記錄只在檔案開啟時處於活動狀態。vim 通過了一個非常好用的特性,即使在檔案關閉後也可以維護撤消歷史記錄,這意味著即使在儲存、關閉和重新開啟檔案後,你仍然可以撤消更改。撤消檔案是隱藏檔案,副檔名為.un~。
複製程式碼
setundofile
設定聲音警報鈴聲(如果你試圖滾動超過行尾,會發出警告):
複製程式碼
seterrorbells
如果你願意,還可以設定視覺警報:
複製程式碼
setvisualbell
一些額外的 tips
vim 提供了長格式和短格式命令,都可用於設定或取消設定。
autoindent 命令的長格式:
複製程式碼
setautoindent
autoindent 命令的短格式:
複製程式碼
setai
檢視命令的當前設定,並且不改變當前的設定值,請在命令末尾新增問號:
複製程式碼
setautoindent?
要取消或關閉命令,在命令前面加上 no 字首(對大部分命令適用):
複製程式碼
setnoautoindent
可以只為一個檔案設定命令,而不是全域性。要做到這個,需要開啟檔案並輸入冒號:,然後跟上 set 命令。這個配置只對當前檔案編輯會話有效。
檢視命令幫助:
複製程式碼
:helpautoindent
注意:本文列出的命令針對 Linux 上 7.4 版本(2013 年 8 月 10 日)的 Vim 和 Windows 上 8.0 版本(2016 年 9 月 12 日)的 Vim 進行了測試。
備忘單
在 vimrc 檔案中複製 / 貼上這些命令:
複製程式碼
" Indentation & Tabs {1} set autoindent {1} set smartindent {1} set tabstop=4 {1} set shiftwidth=4 {1} set expandtab {1} set smarttab {1} "Display & format setnumber settextwidth=80 setwrapmargin=2 setshowmatch " Search {1} set hlsearch {1} set incsearch {1} set ignorecase {1} set smartcase {1} "Browse & Scroll setscrolloff=5 setlaststatus=2 " Spell {1} set spell spelllang=en_us {1} "Miscellaneous setnobackup setnoswapfile setautochdir setundofile setvisualbell seterrorbells
英文原文: ofollow,noindex">https://opensource.com/article/18/9/vi-editor-productivity-powerhouse