我正在尝试编写一个函数来使 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()