私は、さまざまなコード スタイル (タブとスペースなど) を持つ大規模なコード ベースに取り組んでいます。間隔の問題については、ファイルのパスに基づいていくつかの vim 設定を自動化したいと考えています。理想的には、次のようなことをしたいと思います
if (absolute_path.match(".*/kernel")) then
use_tabs()
else if (abslute_path.match(".*/someuserspace_folder/*")) then
use_spaces()
end
この件についてグーグルで検索した結果、このフランケンシュタインを作成しました。
function! SetIndentSpaces()
set tabstop=4
set shiftwidth=4
set expandtab
echo "Using spaces for indentation"
endfunction
function! SetIndentTabs()
set tabstop=8
set shiftwidth=8
set noexpandtab
echo "Using tabs for indentation"
endfunction
autocmd BufEnter,BufRead */kernel/*.\(c|h\) call SetIndentTabs()
autocmd BufEnter,BufRead */userpace_code/*.\(cpp|c|h\) call SetIndentSpaces()
ただし、トリガーが呼び出されることはありません。私の正規表現が間違っていると推測していますが、それを検証する方法が見つかりません(読んでください:私はvimを吸っています)。
私が間違っていることで誰かが明らかなことを見つけますか?