VIM通过组合三个命令在垂直拆分中打开c ++头文件

时间:2015-12-23 14:53:20

标签: vim ctags

我用ctags索引了我的c ++代码库,我可以按如下方式打开一个头文件:

:tag myfile.h

(myfile.h所在的位置并不重要,只要它在索引代码库中,它将在vim中正确打开)

当我编辑c ++文件时,我可以按如下方式获取标题文件名:

:e%<.h

e.g。编辑myfile.cpp时,执行此命令将在命令行上显示myfile.h。

通过发出:

,可以垂直拆分打开文件
:vs <myfile>

现在我要完成的是拥有1个命令或函数,我可以用它来打开我目前正在垂直拆分中编辑的相应c ++文件的头文件。因此,基本上我想结合上面的3个命令,好像我要做一个Unix管道,例如:

:vs tag | e%<.h

" :vs     to open file in vertical split
" :tag    to find tag
" :e%<.h  to get header filename

显然Unix管道并不适用于vim,或者我试图编写一个函数,我将命令的结果分配给变量,例如

headerFileName = :e%<.h

这显然不是正确的做法,我有点迷失在这里,所以我希望有人可以提供一些帮助。

1 个答案:

答案 0 :(得分:3)

有几个插件已经这样做了(不需要ctags数据库BTW)。

例如,使用 alternate (又名a.vim),您只需从头文件或源文件中键入:VS即可在垂直分割窗口中打开另一个

请注意, alternate 可以选择告诉在哪里找到另一个文件(同一目录,目录名称上的substitute,...)

否则,我怀疑您正在寻找expand():exe。如果你写一个函数,它可能是

function! s:whatever() abort
    let crt = expand('%:t:r')
    vnew
    exe 'tag '.crt.'.h'
endfunction
command! whatever call s:whatever()