Vim:打开 Grep 给出的行上的匹配文件?

标签 vim grep

我想在命令行上 grepping 后自动到达 Vim 中结果的位置。有这样的功能吗?

要在 Vim 中按 grep 给出的行打开的文件:

% grep --colour -n checkWordInFile *
SearchToUser.java:170:  public boolean checkWordInFile(String word, File file) {
SearchToUser.java~:17:  public boolean checkWordInFile(String word, File file) {
SearchToUser.java~:41:          if(checkWordInFile(word, f))

最佳答案

如果您通过管道将输出从 grep进入 vim

% grep -n checkWordInFile * | vim -

您可以将光标放在文件名上并点击 gF跳转到该文件中由该行 grep 输出引用的行。 ^WF将在新窗口中打开它。

在 vim 中你可以做同样的事情
:tabedit
:r !grep -n checkWordInFile *

这相当于但不如
:lgrep checkWordInFile *
:lopen

这会调出超棒的快速修复窗口,以便您可以方便地浏览搜索结果。

你也可以通过使用 vim 的原生 grep 来获得更慢但在某种程度上更灵活的结果:
:lvimgrep checkWordInFile *
:lopen

这个使用vim REs和路径(例如允许**)。运行可能需要 2-4 倍的时间(可能更多),但您可以使用花哨的 \(\)\@<= s 和羽毛的鸟。

关于Vim:打开 Grep 给出的行上的匹配文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2653419/

相关文章:

c - Vim 相当于 emacs 括号 echo

git-grep 不使用多线程

c++ - 如何grep 'vector'而不是 'std::vector'

bash - grep 和 sed - 替换字符串的所有实例

unix - 如何使用 Unix grep 删除整 block 不需要的文本?

ubuntu - 如何让 vim 在 Mac OS X 上像在 Ubuntu 上一样运行?

Vim:Alt + 箭头键在一行内 move 选择

ruby - 文件编码在 ruby​​ 中生成空白字符——为什么?

syntax - 为什么有些 Vim 映射在冒号后包含 <C-U>?

bash - 如何在 shell 脚本中从 YML 中删除子 block ?