在Vim中查找特定类型的标记

Jon*_*han 6 vim ctags

所以这是我的问题.我已经和Vim一起工作了很多,而且大部分时间都很棒.但是,每当我尝试搜索名称与某个变量名称相同的函数时,仍然让我烦恼的一件事.我有时会在第一次尝试时获得正确的标签,有时不会.然后,在我提取备用标记列表后:tselect,它会为函数定义或变量定义/赋值提供标记列表.(我使用PHP,因此定义和赋值在语法上无法区分).

但是,我注意到有一个标记为"kind"的列,其值分别为'f'或'v',分别用于函数和变量.我似乎无法找到关于这个领域的大量信息,似乎它可能没有完全标准化或广泛使用.我的问题是:你能用"善意"过滤Vim中的标签结果吗?

理想情况下,默认设置是搜索整个标记文件,但通过指定一些额外标记,您只能搜索特定的('f'或'v')类型.

对我来说这是一个小问题,因为它经常没有出现,但有时这是一个真正让你烦恼的小问题.

ldo*_*dog 5

您当然可以使用您想要的任何php类型的组合生成ctag文件(请参阅命令的输出ctags --list-kinds.)

如果您觉得值得付出努力,您可以创建一个vim函数tagkind并将其绑定到命令.该tagkind函数可以覆盖当前的tagsvim变量,使其仅指向您感兴趣的种类的标记文件,并调用可:tag.选项,它可以存储tags变量的先前版本,并在此调用之后恢复它.

不幸的是,除此之外我还不知道.也许别人会知道.

  • 有趣的想法——对我有用。如果有人关心,我将我的 `.vimrc` 代码片段放在 https://gist.github.com/1349053 我不太擅长 vimscript,但它对我来说似乎已经足够了。 (2认同)

cdl*_*ard 5

我生成python ctags --python-kinds=-i以排除import语句的标签(这是无用的).也许你可以完全生成--php-kinds=-v并删除一类标签.

你可以阅读:help tag-priority.显然,基于一些硬编码逻辑选择"最高优先级"标签.