Vim的“跳转到文件”功能

3
我正在寻找一个好的解决方案,以便使用制表符完成/通配符匹配/驼峰式等方式打开源代码树中的任何文件。我遇到的困难是找到一种方法,在包括隐藏的.svn目录在内的大约30,000个文件和7000个目录的代码库上运行。其他程序(如Resharper或Sublime Text Editor)能够在此代码库上几乎瞬间跳转到任何文件。
到目前为止,我尝试过像将递归双星“**”添加到我的Vim路径和FuzzyFinder插件,但都无法处理大量的文件和目录。这些方法会导致Vim变得完全无响应或至少非常缓慢。

1
你试过所有可用的替代方案了吗(如CommandT、LustyExplorer等)?我认为你会发现这些文件导航插件都存在性能问题。在如此庞大的代码库上,<C-]>:tag tagname 的表现如何? - romainl
我的猜测(几乎可以肯定)是其他解决方案至少会构建一个带有目录结构的文件,但该文件也很可能被加载到内存中。我不确定在Vim中如何做到这一点,或者是否有任何插件可以为您处理它,但这就是您需要查看的内容。 - Wayne Werner
3个回答

6

曾经在一个旧的项目中,有着庞大的目录树和成千上万的文件。那时我的做法是(在一个空缓冲区内):

:read !tree -af /PATH/TO/PROJECT

现在我有了一个带有目录树的缓冲区。 现在,我可以使用“标准”Vim正则表达式搜索该缓冲区。 如果我找到了文件,只需按下gf即可跳转。

如果您没有安装tree,仍然可以使用以下方法:

:read !find /PATH/TO/PROJECT -type f -print 2>/dev/null

HTH


谢谢这个想法,我认为我最终会根据它编写一些函数或插件来实现我需要的功能。 - telenachos

1

试试Command-T。它支持驼峰式命名法,并且在猜测你要查找哪个文件方面非常智能。我觉得它也非常稳定。


0

虽然我还没有尝试过,但我听说GNU GLOBAL非常快。你可以通过gtags.vim来使用它。

同时,有提供如何在vim中使用它的帮助。

希望这能帮到你。


很酷,从未听说过这个。我忘了提到我正在使用C#,不幸的是GNU GLOBAL目前不支持它。 - telenachos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接