5

我正在编辑一个带有几个方法的类的简单 PHP 文件,如果$bar是这个类的一个实例,我输入

$bar->ctrlxctrlo

除了我的类的方法之外,我还弹出一个包含许多方法(内置方法)的弹出窗口,并出现在 ctags 列表中。如何避免显示所有这些外部方法而只保留我的类中定义的方法?

4

1 回答 1

1

我相信你已经看过 VIM 文档 ( :help ft-c-omni) :

在不带任何“.”的名称后使用 CTRL-X CTRL-O 时 或“->”直接从标签文件完成。这适用于任何标识符,也适用于函数名称。如果你想完成一个没有出现在标签文件中的局部变量名,请改用 CTRL-P。

在带有“.”的内容之后使用 CTRL-X CTRL-O 时 或 "->" Vim 将尝试识别变量的类型并找出它有哪些成员。这意味着只有对变量有效的成员才会被列出。

当成员名称已经完成时,CTRL-X CTRL-O 将添加一个“。” 或“->”表示复合类型。

如果我没看错的话,内置功能充其量只允许您使用 CTRL-P 并匹配局部变量名称,从而完全绕过 TAGS 文件。

您真正想要的是一个特定于您当前正在处理的翻译单元的 TAGS 文件(标题/cpp 文件)。如果我试图解决这个问题,我会执行以下步骤:

  1. 创建一个脚本(或者更好的是,合并到一个 makefile 中)自动创建翻译单元特定的 TAG 文件。
  2. 在 vim 中创建一个命令来卸载现有的 TAGS 文件,重新加载文件特定的 TAGS 文件,并执行常规CTRL-X CTRL-O的全能补全。如有必要,还原为原始 TAGS。

此外,在我看来,您似乎希望能够直接从 VIM 调用 #1 的脚本,因为您在编写代码时会经常更改当前的翻译单元。

我希望这能让您朝着正确的方向开始,我很高兴看到/帮助您实施 =)。

于 2010-06-03T22:14:56.593 回答