タブにまつわるコーディングルールは色々とあるけれど、個人的にはソフトタブを好んで使っており、また今の職場もルール上、ソフトタブを使うことになっている。が、たまにルール外の世界から持って来たコードにハードタブを見つけたりすると、その場で変換することになる。
expandコマンドを使える真っ当な環境なら、素直にそれを使えばいい。OS Xを含むUnix系の環境なら当たり前のように使える。これまでVimでは
:%!expand -t4とかやって来た。が、好き勝手にCygwinを入れたりできないような厳しい職場のWindowsだと、困ったことにこの手を使えない。で、これまでメンドクセーと思いながらもLinuxマシンに持って行って変換していたのだが、Vim組み込みの機能でできることを今更知った。
使うのはズバリ
:retab:set expandtab状態で:retabすればハードタブがソフトタブになる。
逆に:set noexpandtab状態で:retabすれば、ソフトタブがハードタブになる、…と言いたいところだが、ちょっと癖がある。help retabから引用すると、
Replace all sequences of white-space containing a <Tab> with new strings of white-space using the new tabstop value given.ハードタブが含まれたホワイトスペースでないと変換してもらえない。ハード・ソフト混在の気持ち悪いソースには使えるけど、きちんとソフトタブに統一されたソースは、:retabではハードタブに変換できない。ただ、手段がないわけではなく、
With !, Vim also replaces strings of only normal spaces with tabs where appropriate.:retabの代わりに
:retab!すればOK。
0 件のコメント:
コメントを投稿