给定 grep -n 的结果,如何在特定行打开 vim?(仅使用键盘)

给定 grep -n 的结果,如何在特定行打开 vim?(仅使用键盘)

当我运行grep "keyword" -n并得到以下结果列表时:

a/b/c:10:    keyword
a/b/c:70:    keyword
a/b/d:50:    keyword

我怎样才能打开它找到的行中的一个文件(比如列表中的第二个文件)?

我现在只需使用鼠标复制输出,然后复制它vim,然后添加+我复制的行号。(这意味着我vim a/b/c +70使用鼠标复制来获取文件名,再使用另一个鼠标复制来获取行号[或者当它足够短时我只是手动复制它])

有没有办法用键盘快捷键来实现呢?

答案1

两件事情:

  1. Vim 对 有一些支持grep

    如果你打开 Vim,然后执行:grep keyword ...,Vim 填充快速修复列表结果,并跳转到第一个文件。然后您可以跳转到n第 th quickfix 条目:cc n(和其他命令)。

  2. 您可以使用 grep 的输出填充上述快速修复列表:

    vim -q <(grep -n keyword ...)
    

    然后使用上面提到的快速修复导航命令。

两者都比手动摆弄 grep 的输出更简单。

作为 (2) 的替代方法,如果您认为之后不一定会打开 Vim,则可以将 grep 的输出保存到文件中并使用该文件:

grep ... | tee log
vim -q log

答案2

如果还不支持 grep,那么您可以这样做,正如@muru 回答的那样:

:cexpr system("grep -n keyword")

git grep例如,它可以与另一个命令一起使用。

另外,您可以在缓冲区中打开输出并在其上使用“cbuffer”。

快速解决手册中有关该内容的部分。

答案3

通过管道将输出传输grepvim并使用格氏一系列动作移动到光标下的文件。

grep "keyword" -rn | vim -

相关内容