VIM:将jumplist限制为某些跳转命令

VIM:将jumplist限制为某些跳转命令,vim,Vim,jumplist的Vim默认行为如下所示 以下命令是“跳转”命令:“'”、“`”、“G”、“/”、“?”, “n”、“n”、“%”、“(“,”)、“[[”、“]]”、“{”、“}”、“:s”、“:tag”、“L”、“M”, “H”和开始编辑新文件的命令 但是,我觉得有这么多的jump命令使得jumplist包含的内容比我的多。例如,我使用cscope从函数调用跳到函数实现,然后在实现中,我可以使用%导航到匹配的大括号,或者使用/搜索某些内容。但是,我希望jumplist只保留cscope跳转历史

jumplist的Vim默认行为如下所示

以下命令是“跳转”命令:“'”、“`”、“G”、“/”、“?”, “n”、“n”、“%”、“(“,”)、“[[”、“]]”、“{”、“}”、“:s”、“:tag”、“L”、“M”, “H”和开始编辑新文件的命令

但是,我觉得有这么多的
jump
命令使得
jumplist
包含的内容比我的多。例如,我使用
cscope
从函数调用跳到函数实现,然后在实现中,我可以使用
%
导航到匹配的大括号,或者使用
/
搜索某些内容。但是,我希望jumplist只保留
cscope
跳转历史,这样我就可以很容易地回到调用点


是否有某种方法可以从
跳转列表中排除某些运动?

如果您使用的是常规
ctags
而不是
cscope
,这将通过;与jumplist中的
等效的是标记堆栈中的

提供以下服务:

cscope查询结果就像常规标记一样,所以 您可以像使用普通标记一样跳转到它们(Ctrl-]或:tag) 然后用Ctrl-T弹出标记堆栈返回。(请注意 但是,如果不重新映射这些命令或设置选项,您实际上不会通过简单地执行Ctrl-]或:tag跳转到cscope标记


我认为这意味着,如果您正确使用cscope接口,
应该可以正常工作,但为了使标记查找更方便,您需要构建自己的指向cscope接口的快捷方式。

理论上,您希望使用标记堆栈,而不是@Ingo Karkat建议的跳转列表。不过,我认为这可能是一个错误如果您没有离开函数,请使用
[[
[m
返回函数定义。如果您知道您将返回函数定义,我建议您打开一个新窗口(例如
:拆分
s
)或设置(文件)标记(例如
mm
mm
).

我想您想要的是标记堆栈,而不是跳转列表。请参见
:help tagstack
tagstack
在我按
Ctrl+T
pop
返回前一位置时起作用。但是当我尝试使用“标记”时。它提示我,
E433:no tag file file
E426:tag not found
。当前我遇到的问题是,使用tagstack可以跳转到以前的cscope位置,但我找不到向前跳转的方法。使用
tag
命令,它会提示我
no tag file
。在cscope帮助中,我仍然不太清楚了解“重新映射这些命令或设置选项”,这里的
选项是什么?
我在的帮助下找到了解决方案。除了生成
cscope.out
,需要使用
ctags-L cscope.files
来生成标记项。有了这两个选项,我现在可以在
标记堆栈中双向移动
如果只跳一层,打开拆分窗口是可以的,但是如果函数“on call”有几个层,窗口将越来越小,无法显示足够的代码