[Vim]ファイルの拡張子によって自動でインデント幅を変える

  • 公開日:2020/3/6

コーディングルールによってインデント幅が異なるので、開いたファイルの拡張子によってインデント幅が自動で変わるように設定したいと思います。

基本的にはインデント幅は「4」を指定しておいて、rubyのときだけ「2」にします。

FileTypeごとに.vimファイルを作ることもできますが、rubyのときにインデント幅を変えたいだけなので、今回は.vimrcに記述することにします。

set tabstop=4
set shiftwidth=4
set autoindent
set smartindent

augroup fileTypeIndent
	autocmd!
	autocmd BufNewFile,BufRead *.rb setlocal tabstop=2 shiftwidth=2
augroup END

1〜4行目で共通設定として以下を指定しています。
tabstop:画面上で表示する1つのタブ幅(4に設定)
shiftwidth:自動インデントでのインデント幅(4に設定)
autoindent:改行したときに自動でインデントします
smartindent:{ があると次の行を自動でインデントします

6行目以降で.rbの場合はautocmdで以下になるよう設定しています。
タブ幅:2
自動インデント幅:2

augroupでグループ化して記述しているので、他にも別で指定したいFileTypeがある場合は、8行目を参考に追記すればOKです。