普段の設定
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()