一些設置選項的含義
set expandtab: 編輯時將tab展開為tabstop個空格。
shiftwidth:使用自動縮進或>>,<<等命令時的縮進寬度。若無expandtab,當連續縮進達到tabstop距離時,會替換為一個tab字符。
tabstop:文件中的tab的顯示寬度。
softtabstop:編輯時按下的縮進寬度,不啓用expandtab會混合tab與space進行縮進。
一些組合
1). tab字符顯示4個space;縮進只使用4空格
set tabstop=4
set shiftwidth=4
set expandtab
2). tab字符顯示8個space;縮進只使用4空格
set softtabstop=4
set shiftwidth=4
set expandtab
個人認為,維持tabstop和縮進空格數一致(即組合1)更好。大多數源代碼文件都是space-only或者tab-only的,而使用tabstop=4可以使用:retab將源文件轉換為4-space縮進的源文件。
3). 只用tab(4-space)
set tabstop=4
set shiftwidth=4
縮進模式之間的轉換
由於只是簡單的字符串處理,不涉及源碼編譯。所以以下方法不能完美的實現縮進轉換。如果您有更好的方法,歡迎留言。
1). tab到空格
:%retab 將文件中的tab替換為tabstop個空格。可能會影響字符串中的tab(不是轉義字符'\t')
2). 空格到tab
:%retab! 與1)相反。同樣可能會影響字符串。
3). 2-space到4-space
:%s/ /&&/g 可能會影響字符串中的內容。
4). 4-space到2-space
:%s/ / /g 可能會影響字符串中的內容。
5). 格式化
gg=G 將整個文件格式化,使用cindent和lisp。效果可能會比以上幾種簡單的字符串處理更好。