6

我在设置 ctags、jsctags 和 tagbar 方面需要帮助,这样我才能拥有一个可行的 Javascript 编辑环境。我安装了所有东西,但不知道 ctags 和 jsctags 如何协同工作,所以我不知道如何正确配置。我已经做了很多谷歌,但信息非常破碎并且缺乏一致性。我收到了与这篇文章类似的错误,ctags and tagbar configuration are out of sync。我在 OS X 山狮和 iterm2 上。

任何帮助将不胜感激。一步一步的说明会很好。

谢谢。

4

1 回答 1

6

首先,您必须了解 jsctags 和 ctags 可能永远不会同步。即使您只有一个简单的功能,两个程序也可能输出略有不同的信息。因此,建议使用其中之一但不要同时使用两者。

其次,AFAIK,不需要将 TagBar 配置为使用 jsctags 而不是 ctags。如果你在做 JavaScript,如果它可用,它只会默认为 jsctags。如果你有一个工作的 jsctags,TagBar 不应该抱怨。

第三,对于它自己的标签相关功能(:tag:tselect<C-]>等),Vim 仅依赖于一个或多个物理tags文件的存在。这些文件是由 ctags、jsctags 还是由whatevertags 生成的,只要它们生成正确就无关紧要。

现在我们到了第四点,这才是真正的痛点:Tagbar 和它的老表亲 TagList 实际上都没有使用物理tags文件。他们直接点击 ctags 或 jsctags,甚至不尝试使用或更新任何现有tags文件。正因为如此,以及 TagBar 只处理当前缓冲区的事实,你自己的物理tags文件(以及 Vim 的标签相关功能)和 TagBar 几乎可以保证不同步。即使您使用相同的索引器。

所以……我建议你使用ctagsjsctags并忘记任何关于同步 TagBar 和 Vim 的标签相关内容的事情,因为这两者是完全独立的:

  • 使用 TagBar 在您当前的缓冲区中理解/导航。

  • 使用 Vim 的标签相关功能在您的项目中移动。


胡思乱想……</p>

  • 为了让 Vim 轻松找到你的tags文件,你应该把这一行放在你的~/.vimrc:

    set tags=./tags,tags;/
    

    ./tags意思是“tags在当前文件的目录中查找文件”,tags意思是“tags在工作目录中查找文件”,;/意思是“继续向上查找直到到达/”。

  • TagBar wiki讨论了 jsctags 中的一个错误,请确保您不关心它。

  • 当您编写带有大量回调和自执行函数的疯狂“现代”JavaScript 时,jsctags 比 ctags 更好。如果您的 JavaScript 更传统,ctags 可能就足够了。

于 2013-03-15T06:50:46.710 回答