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

时间:2018-11-03 04:00:37

标签: vim

跳转列表的默认行为如下

  

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

但是,我感觉到如此多的jump命令使jumplist所包含的内容比我所拥有的更多。例如,我使用cscope从函数调用跳转到函数实现,然后在实现中,我可以使用%导航到匹配的花括号,或使用/搜索特定的括号。内容。但是,我希望跳转列表仅保留cscope跳转历史记录,以便我可以轻松返回到调用点。

是否有某种方法可以排除jumplist中的某些运动?

2 个答案:

答案 0 :(得分:2)

如果您使用常规的ctags而不是cscope,则可以通过:help tagstack内置;跳转列表中的<C-O>等同于标签栈中的<C-T>

:help cscope-intro提供以下内容:

  

cscope查询结果变得与常规标签一样,因此   您可以像使用普通标签(Ctrl-]或:tag一样)跳转到它们   然后使用Ctrl-T弹出标记栈以返回。 (请注意   但是,您实际上并没有通过简单地执行Ctrl-]或:tag而无需重新映射这些命令或设置选项来跳到cscope标签

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

答案 1 :(得分:0)

理论上,您建议使用标记栈代替@Ingo Karkat的跳转列表。但是,我认为假设您没有离开函数,仅使用[[[m回到函数定义会更简单。如果您知道要重新使用它,那么我建议您打开一个新窗口(例如:split<c-w>s)或设置一个(文件)标记(例如mm或{ {1}}。