VIM 三个命令组合垂直拆分打开c++头文件
VIM open c++ header file in vertical split by combining three commands
我已经用ctags索引了我的c++代码库,我可以打开一个头文件如下:
:tag myfile.h
(myfile.h 位于何处并不重要,只要它在索引代码库内,它就会在 vim 中正确打开)
在编辑c++文件时,可以得到头文件名如下:
:e%<.h
例如编辑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
这显然不是正确的做法,我在这里有点迷路,所以我希望有人能提供一些帮助。
有几个插件已经可以做到这一点(顺便说一句,不需要 ctags 数据库)。
例如,使用 alternate(又名 a.vim),您只需从头文件或源文件中键入 :VS
即可打开另一个垂直拆分 window.
请注意 alternate 有一个选项可以告诉在哪里可以找到其他文件(同一目录,substitute
目录名称,...)
否则我怀疑你在找expand()
和:exe
。如果你写一个函数它可能是
function! s:whatever() abort
let crt = expand('%:t:r')
vnew
exe 'tag '.crt.'.h'
endfunction
command! whatever call s:whatever()
我已经用ctags索引了我的c++代码库,我可以打开一个头文件如下:
:tag myfile.h
(myfile.h 位于何处并不重要,只要它在索引代码库内,它就会在 vim 中正确打开)
在编辑c++文件时,可以得到头文件名如下:
:e%<.h
例如编辑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
这显然不是正确的做法,我在这里有点迷路,所以我希望有人能提供一些帮助。
有几个插件已经可以做到这一点(顺便说一句,不需要 ctags 数据库)。
例如,使用 alternate(又名 a.vim),您只需从头文件或源文件中键入 :VS
即可打开另一个垂直拆分 window.
请注意 alternate 有一个选项可以告诉在哪里可以找到其他文件(同一目录,substitute
目录名称,...)
否则我怀疑你在找expand()
和:exe
。如果你写一个函数它可能是
function! s:whatever() abort
let crt = expand('%:t:r')
vnew
exe 'tag '.crt.'.h'
endfunction
command! whatever call s:whatever()