分類: Linux

將 Vim 中程式碼排版的 Tab 字元轉為等寬的空白字元

這裡記錄如何在 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

G. T. Wang

個人使用 Linux 經驗長達十餘年,樂於分享各種自由軟體技術與實作文章。

Share
Published by
G. T. Wang
標籤: Vim

Recent Posts

光陽 KYMCO GP 125 機車接電發動、更換電瓶記錄

本篇記錄我的光陽 KYMCO ...

1 年 ago

[開箱] YubiKey 5C NFC 實體金鑰

本篇是 YubiKey 5C ...

2 年 ago

[DIY] 自製竹火把

本篇記錄我拿竹子加上過期的苦茶...

2 年 ago