タブもしくはスペースとインデント
vimにおいてタブもしくはスペースとインデントは明確に区別されている。 インデントは、'>>' もしくは '<<' や自動インデントの設定によって挿入することが出来る。
タブ関連オプション
tabstop
ts
'\t'に対する空白数softtabstop
sts
'<Tab>'キーの入力に対する空白数。expandtab
et
trueの時、'<Tab>'キーの入力が自動的にスペースに置き換えられる
インデント関連オプション
shiftwidth
sw
インデントに対する空白数。noet
の時、tabstop
との値に応じてスペースが補完される。smarttab
st
行の先頭でキーを入力すると、インデントの挿入になる。 autoindent
ai
改行時に、前行と同数のインデントを自動挿入してくれる。smartindent
si
改行時に、ブロックに応じてインデントを自動挿入してくれる。
ソースファイルを編集する際のインデント設定例
プロジェクトやOSSごとにインデントにタブを使うかスペースを使うかまちまちです。
またスペースを使う際は、文字数も2、4、8といった感じでまちまちです。
そこで インデントで使用される空白数は tabstop
だけで管理出来るようにすることが ベストプラクティス であると考えられます。
タブかスペースかは、expandtab
をオン・オフすることで切り替えます。
例 '\t' をインデントとする設定
set noet ts=4 sts=-1 sw=0
sts=-1
値が0だとオフになり、インデントとしてスペースを使用している場合、<C-h>によるインデント戻りが効かなくなるので、負数にすることでshiftwidth
に従うようにする。sw=0
tabstopに従うようにする
まとめ
タブを "\t" とした理由は、実際のタブの制御コード値を表したいため。 Vimは編集時に<Tab>キーの入力をスペースに置き換える機能があるので、ややこしい。