普段の設定

set tabstop=4
set expandtab
set shiftwidth=4

こんな設定でインデントをスペース4つとして書いると、LESS/JavaScript/CSS/HTML の場合は嫌でもインデントが深くなり、縦分割して作業すると悲惨なことになってしまう問題が起きる。

function を定義して autocmd で呼び出す

function を定義して autocmd で呼び出すやり方で解決した。ftplugin/に書いても問題なさそうではあるが、vimrc 自体が小さいこともあり、見通しよくするために直書き(分量が増えたらあとでftpluginに移せば良い)

条件として
  • この4つのファイルタイプの場合のみインデントをスペース2つとして設定する
  • それ以外のファイルタイプでは影響が出ないようにする
  • ~/.vimrc に直書き(大した量ではないので ftplugin はナシ)
設定をvimrcに追記

ファイルタイプ毎にメインの設定とは別の設定で利用できる。

function! s:javascript_filetype_settings()
    setlocal tabstop=2
    setlocal shiftwidth=2
    setlocal cindent
endfunction
autocmd FileType javascript call s:javascript_filetype_settings()

function! s:html_filetype_settings()
    setlocal tabstop=2
    setlocal shiftwidth=2
    setlocal includeexpr=substitute(v:fname,'^\\/','','') |
endfunction
autocmd FileType html call s:html_filetype_settings()

function! s:css_filetype_settings()
    setlocal tabstop=2
    setlocal shiftwidth=2
    setlocal cindent
endfunction
autocmd FileType css  call s:css_filetype_settings()
autocmd FileType less call s:css_filetype_settings()