当前位置:  开发笔记 > 编程语言 > 正文

在vim中获取ctags以进行定义,而不是声明

如何解决《在vim中获取ctags以进行定义,而不是声明》经验,为你挑选了3个好方法。

我遇到的问题是vim/gvim中的ctags很多时候都会将我带到前向声明而不是函数的实际定义.

有办法解决这个问题吗?



1> Derek..:

我认为最简单的方法是使用"g ctrl-]"而不是"ctrl-]".如果只有一场比赛,它会带你到那里.如果有多个匹配项,它会将它们全部列出,让您选择所需的匹配项,如:tselect.两全其美的.:)



2> Nathan Fellm..:

您应该能够使用tntp跳转到各种匹配标签.

按此^]即可转到第一场比赛.

如果那不是您想要的匹配,请键入:tn以转到下一个.

如果键入的:tn次数过多,则可以键入:tp以返回上一个.



3> DrAl..:

我相信Vim默认会转到标签文件中的第一个标签.如果您愿意,可以选择不同的一个:使用:tj(类似于:tselect,但如果只有一个匹配则自动跳转)或Ctrl-]后面跟着:tn).

更改默认值的唯一方法是更改​​标记文件的顺序,但我不相信ctags提供了一个命令行选项来执行此操作.

这并不像听起来那么难,因为你基本上需要一个打开标签文件的脚本,按照'kind'标签对其进行排序并再次将其写回.在"类"的标签是描述它是否是一个函数(f),函数原型(P),宏单个字符,一个枚举名称等等等等等等.如果你使用Linux,那么它可能,在理论上,就像这样简单:

#!/bin/sh
ctags -R -f - . | tac > tags

由于tac反转了文件中行的顺序,因此这将自动将定义放在第一位.但是,由于需要维护标头并且Vim更喜欢对标签文件进行排序,因此它会变得有点复杂,所以最好通过文件并按正向顺序对第一个条目(标签名称)进行排序,然后以相反的顺序排序.因此,更复杂的事情可能会更好.

我为无耻的插件道歉,但我写了一个(间接)做你需要的Vim插件.它用于为函数名,宏,枚举等添加许多额外的突出显示组.但是,这样做的其中一个是重新排序标记文件,以便函数实现在函数声明之前,从而实现你想要的(我和你有同样的需求).如果你不想要任何突出显示功能,你可能很容易将它全部剥离:它是一个相当简单的python程序和一个更简单的Vim脚本,可从我的网站获得.

推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有