2013/03/13

用 vim 調整 tab 和空白混合的程式碼

之前的筆記提過混合 tab 和空白造成 coding style 混亂的問題和建議解法:
在你決定好 coding style 之後,還是要面對一個問題:如何將 tab 和空白已經混亂的程式碼調整好?

方法一是用 Artistic Style 之類的程式碼美化軟體重新編排。這種方法的優點和缺點是重新編排的範圍包含縮排和斷行方式,甚至運算子和括號前後是否需要加上空白等等。若只想針對 tab 和空白做調整,這方式是有風險的大手術。

方法二是利用 vim 半人工轉換。此方法適合縮排大致正確,只需處理 tab 和空白的情況。以下,簡單介紹這個方法。
  1. 首先,請 設定 vim 分別顯示 tab 和空白字元,這樣你才能清楚分辨。
  2. 參考本文一開始介紹的兩篇文章,設定好你理想的 tab 字元處理方式。
  3. 瀏覽你的程式碼,確認縮排位置是否正確,有錯就修正。注意!只看位置,不管 tab 和空白是否混淆。
  4. 然後,執行 vim 的 ":retab" 指令就可按照你的設定重新調整 tab 和空白了 (記得存檔)。若你 coding style 的縮排是用空白字元,也就是這次調整你要將 tab 轉成空白,以上方法可達到完美的程度。但,若你決定以 tab 字元縮排,以上方法會保留不含 tab 的連續空白 (安全起見),不一定每個地方都轉換到。若你確定要全改,用 ":retab!" 指令即可。



沒有留言: