开放的编程资料库

当前位置:我爱分享网 > PHP教程 > 正文

Vimgrep 和 Vim 项目

ChrisHartjes今天正在寻找Vim的“在项目中查找”功能。“在项目中查找”是Textmate的一个功能,他已经习惯了这个功能,但在寻找与之对应的功能时遇到了困难。

有趣的是,Textmate是一个新来者,当然,vim多年来一直有这样的功能。当然,使用vim时要记住的是它的unix根;通常,如果您知道用于执行某些操作的unix命令,则可以在vim中找到您需要的命令。在这种情况下,关键是vimgrep插件,它随标准vim发行版一起提供。

vimgrep上有各种资源。vim文档中包含一个章节,在google上快速搜索该主题会立即找到一些不错的教程。如果您曾经使用过grep,语法会非常简单:

vimgrep /{pattern}/[g][j] {file} ...

“g”选项表示将返回搜索的所有匹配项,而不是每行一个,“j”选项告诉vim自动跳转到第一个匹配项。不过,“g”标志的真正含义是什么,以及如何返回搜索结果?

Vimgrep在所谓的“quickfix”窗口中返回搜索结果,这就是vimgrep文档分崩离析的地方……它没有解释这是什么,也没有链接到它(这很好地表明它实际上有一个单独的主题)。

Quickfix窗口是一个窗格,每行显示一个搜索结果。每行显示匹配的文件、行号和该行的内容:

/home/matthew/git/bugapp/application/controllers/helpers/GetForm.php|10| * @var Zend_Loader_PluginLoader

你不能从这个窗口做很多事情;它只是作为您当前正在从列表中查看的文件的视觉指示器。但是,在主窗口中,您可以开始使用Quickfix命令的子集,一次一个地迭代结果。快速总结:

  • :cc将移动到列表中的下一个匹配项
  • :cn将移动到列表中的下一个匹配项
  • :cp将移动到列表中的上一个匹配项
  • :cr将倒退到列表中的第一个匹配项
  • :cla将快进到列表中的最后一场比赛

完成后,您只需关闭Quickfix窗口/窗格即可继续工作。

我应该注意到vimgrep是跨平台的。在基于*nix的系统上,它默认使用本机grep命令,但它还包含一个内部(较慢的)实现,用于默认不提供grep的操作系统。如果需要,您还可以将命令映射到替代实现。

我个人在项目插件中使用此功能最多。项目将vimgrep映射到两个不同的命令:gG。第一个将grep当前项目中当前级别的所有文件;thesecond做同样的事情,但也递归到子项目中。这是重构代码的一种非常简单的方法,特别是对于名称更改。

未经允许不得转载:我爱分享网 » Vimgrep 和 Vim 项目

感觉很棒!可以赞赏支持我哟~

赞(0) 打赏