Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

[Vim] インデントとタブもしくはスペースを区別する

$
0
0

インデントの挿入

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=00にすることで、 tabstopに従うようにする。

こうすることによって、インデントをタブからスペースに切り替えた際に、空白数の設定は tabstopの値を変更するだけですみます。

Appendix

tabstopsofttabstopの違い

オプション説明
tabstopファイルに書き込まれているタブ制御文字(\t)に対する見た目上の空白数を設定する
softtabstopインサートモード時に、<Tab>キー、<BS>キーの入力に対する見た目上の空白数を設定する。実際に入力される制御文字は、インデントと同様に expandtabに依存します。

参照


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>