這裡記錄如何在 Vim 編輯器中,設定讓 tab 鍵自動轉換為空白字元。
程式碼的排版對於程式的可閱讀性是相當重要的,如果需要將程式碼貼在自己慣用的編輯器以外的地方,就有可能會因為不同編輯器的 tab 寬度不同,而破壞了原來排版好的程式碼。
因為比較大型的程式時常會有很多層的迴圈或是判斷式,如果 tab 的寬度使用預設的 4 個字元寬的話,時常就會讓整個程式碼因為縮排太多變得很難閱讀(應該程式設計師都會有這樣的經驗),所以我都是習慣將 tab 的寬度設定為 2 個字元寬,在 Vim 中就是設定
tabstop
這個變數:
:set tabstop=2
這樣 tab 鍵就不會太寬:
但是因為一般的編輯器預設的 tab 寬度都是 4 個字元寬,所以如果換一個編輯器來開啟同這個檔案的話,就很容易出現這樣的狀況:
因為 tab 字元的顯示寬度不同,就造成排版的錯亂。
若要避免這樣的狀況,可以將 tab 直接轉換為等寬的空白,這樣不管貼到哪一個編輯器,都可以維持原有的排版。首先設定 expandtab
:
:set expandtab
在 expandtab
設定之後,後續輸入的 tab 字元就會自動轉為等效的空白字元,但是既有的 tab 字元還是維持不變,若要將既有的 tab 字元一併轉換,則需要執行:
:retab
另外還要再設定一下排版用的 shiftwidth
:
:set shiftwidth=2
shiftwidth
是設定縮排的寬度,通常都是設定成跟 tabstop
相同的值。
您可以直接在 .vimrc
設定檔中加上一行設定,包含以上這些參數:
:set tabstop=2 shiftwidth=2 expandtab
這樣以後在編輯程式碼的時候,就不需要煩惱排版與空白問題了。
程式碼的 tab 經過轉換為空白之後,在使用別的編輯器開啟時,也可以維持原來的排版:
參考資料:wikia
einverne
刚刚入门Vim,自己总结了一些Vim常用命令http://einverne.github.io/2015/05/08/vim-tips.html