【问题标题】:VIM search multiple closed filesvim 搜索多个关闭的文件
【发布时间】:2012-01-08 03:33:04
【问题描述】:

我不时喜欢做的一件事是快速搜索我正在处理的目录并找到对特定字符串的所有引用,特别是在调试其他人的代码时。 vim 还不能做这样的搜索吗?有没有其他方法可以直接使用普通终端?

ATM(因为我还在学习 VIM)我在 TextMate 中搜索并以这种方式找到字符串。

【问题讨论】:

标签: search vim


【解决方案1】:

你可以使用 vim 命令:vimgrep。这将在指定文件中搜索模式并将结果放在quickfix 窗口中,然后您可以使用该窗口跳转到特定匹配项。因此,例如要在当前目录中的每个 .php 文件中递归搜索 foo,您可以这样做

:vimgrep "foo" **/*.php

另一个选项是命令:grep,它实际上调用grep 程序(或任何grepprg 设置的)。它还将结果放在quickfix 窗口中以便于导航。但是,这要求您的系统上有 grep

【讨论】:

  • 漂亮,正是我想要的。
【解决方案2】:

vim 是一个编辑器,而不是真正的文件搜索器。然而,调用 shell 并运行 'grep' 非常简单。假设您在 Unix-ish 环境中(TextMate - MacOs?)在命令模式下,按 ctrl-z 您将在 shell 提示符下,然后执行

grep somestring *.c

您将在任何 C 源文件中获得“somestring”的所有匹配项。

完成 grepping 后,只需执行 fg(前台)命令并繁荣 - 返回 VIM。

【讨论】:

  • 好主意,我喜欢你的推荐,而且效果很好。当我可以做 grep somestring * 时会更好。 * 它返回文件名旁边的所有实例。
【解决方案3】:

vimgrep 可以工作,但是如果源代码恰好在 Git 中,那么您可以使用 tpope 出色的 https://github.com/tpope/vim-fugitive 插件,它公开了 :Ggrep,它挂起 git grep 以获得更大的灵活性。

如果您正在寻找的是特定实体(函数、变量等),那么您可能也会对与 ctags 的集成感兴趣。

【讨论】:

    【解决方案4】:

    听起来您可能想看看结合 ctags 的 vim 标签搜索功能。 ctags 是一个实用程序,可用于为源代码(完整的项目树,而不仅仅是目录)生成各种语言对象的索引(标签文件)。在 vim 中,标签是一种可以跳转或搜索的标识符。

    查看 vim 文档:

         :help tagsrch
    

    或者:

    http://vimdoc.sourceforge.net/htmldoc/tagsrch.html#ctags

    【讨论】:

      猜你喜欢
      • 2023-03-06
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      • 2010-10-20
      • 2014-06-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多