我通常使用cscope
来浏览我的代码。每当我点击当前缓冲区C ]
时,我正在读取更改,并显示包含该定义的文件。
假设我已经在vim中有一个标签已经打开了该文件:无论如何要从我当前的位置直接跳转到已经打开的文件?
我不需要拆分,只需跳转到已在缓冲区中打开的文件。
答案 0 :(得分:2)
您可以通过多种选项接近您想要的东西:
" use the quickfix list/window for all cscope queries
set cscopequickfix=s-,g-,c-,d-,i-,t-,e-
" quickfix commands jump to the target buffer where it is displayed
set switchbuf=useopen,usetab
和重新映射:
" override the default <C-]> behaviour
nnoremap <C-]> :cs f g <C-R><C-w><CR>
答案 1 :(得分:1)
对于普通标签,有<C-W>]
映射和:stag
命令在标签跳转之前拆分窗口。
对于cscope,有:cstag
,但没有:scstag
,因此您必须执行单独的命令,例如:
:split | cstag ...
您可以通过这种方式修改/添加C ]
映射。
理想情况下,这会考虑'switchbuf'
设置,并重新使用显示目标缓冲区的现有窗口,而不是进行拆分。不幸的是,Vim当前没有这种行为,并且自己实现这一点很困难,主要是因为你不得不在跳转之前获取目标文件以通过bufwinnr()
检查缓冲区可用性。