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

CIs*_*ies 10 vim command-line grep

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

a/b/c:10:    keyword
a/b/c:70:    keyword
a/b/d:50:    keyword
Run Code Online (Sandbox Code Playgroud)

如何打开找到的行中的文件之一(比如列表中的第二个)?

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

有没有办法用键盘快捷键来做到这一点?

mur*_*uru 16

两件事情:

  1. Vim 对grep.

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

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

    vim -q <(grep -n keyword ...)
    
    Run Code Online (Sandbox Code Playgroud)

    然后使用上面提到的 quickfix 导航命令。

两者都比手动处理 grep 的输出更简单。

作为 (2) 的替代方案,您可以将 grep 的输出保存到一个文件并使用该文件,如果您认为在以下情况下您不一定会打开 Vim:

grep ... | tee log
vim -q log
Run Code Online (Sandbox Code Playgroud)

  • @CIsForCookies 与`grep -n` (`&lt;filename&gt;:&lt;line&gt;: ...`) 的格式不同。我使用 [fugitive plugin](https://github.com/tpope/vim-fugitive) for Git,然后是 `:Gstatus` 的问题,移动到所需文件并按 Enter。 (3认同)