インデントの挿入
Vimにおいて、インデントは以下の操作で挿入することが可能です。
- ノーマルモード時に '>>' or '<<' による挿入
- インデントの自動挿入
インデントの自動挿入
インサートモード時にて、自動でインデントを挿入するオプションとして以下が存在します。
オプション | 説明 |
---|---|
autoindent (ai) | 改行時に、前の行と同じ数だけ自動でインデントを挿入される |
smartindent (si) | 改行時に、ブロックに応じて自動でインデント数を調整して挿入される |
smarttab (st) | 行の先頭で<Tab>キーを入力するとインデントを挿入する |
インデントとタブもしくはスペースを区別する理由
インデントで挿入される 見た目の空白数は、siftwidth(sw)
オプションによって決まります。
このとき実際に入力される文字コードは、 タブもしくは スペースが使われますが、 expandtab(et)
、softtabstop(sts)
の値に大きく依存します。
例: set noet sts=4 sw=6
としたとき インデントを挿入すると、入力される制御文字は、以下で構成されます。
[水平タブ][スペース][スペース]
上記、noexpand
設定なのでインデントの補完にタブが優先して使われ、足りない分スペースで補われるためです。
プログラマーのためのインデント設定 ベストプラクティス
例: タブをインデントとする場合
.vimrc
set noet ts=4 sts=-1 sw=0
sts=-1
負数にすることでshiftwidth
に従うようにする。sw=0
0にすることで、tabstop
に従うようにする。
こうすることによって、インデントをタブからスペースに切り替えた際に、空白数の設定は tabstop
の値を変更するだけですみます。
Appendix
tabstop
と softtabstop
の違い
オプション | 説明 |
---|---|
tabstop | ファイルに書き込まれているタブ制御文字(\t)に対する見た目上の空白数を設定する |
softtabstop | インサートモード時に、<Tab>キー、<BS>キーの入力に対する見た目上の空白数を設定する。実際に入力される制御文字は、インデントと同様に expandtab に依存します。 |