vim が相対ヘッダー/ソース ファイルを分割ウィンドウで開くようにする関数を作成しようとしています。
私が持っているもの(以下を参照)は、分割で開くファイルとは別に、構文の強調表示がありません。
function! SplitOther()
let s:fname = expand("%:p:r")
if expand("%:e") == "h"
set splitright
exe "vsplit" fnameescape(s:fname . ".cpp")
elseif expand("%:e") == "cpp"
set nosplitright
exe "vsplit" fnameescape(s:fname . ".h")
endif
endfunction
autocmd! BufReadPost *.h,*.cpp call SplitOther()
syntax on
コマンドに(の直前に)追加しようとしましendfunction
たが、うまくいかないようです。
分割前にファイルがバッファにない場合に発生すると思いますか? 私は100%確かではありません。
編集
ファイルペアの定義を許可するように関数を変更しましたが、質問がまったく変更されるかどうかわからないため、拡張バージョンは次のとおりです。
function! SplitOther()
let s:pairs = [ [ "h", "cpp" ], [ "vert", "frag" ] ]
let s:fname = expand("%:p:r")
for [s:left, s:right] in s:pairs
if expand("%:e") == s:left
set splitright
exe "vsplit" fnameescape(s:fname . "." . s:right)
elseif expand("%:e") == s:right
set nosplitright
exe "vsplit" fnameescape(s:fname . "." . s:left)
endif
endfor
endfunction
autocmd! BufReadPost * call SplitOther()