当我运行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
两件事情:
Vim 对 有一些支持
grep
。如果你打开 Vim,然后执行
:grep keyword ...
,Vim 填充快速修复列表结果,并跳转到第一个文件。然后您可以跳转到n第 th quickfix 条目:cc n
(和其他命令)。您可以使用 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
通过管道将输出传输grep
到vim
并使用格氏一系列动作移动到光标下的文件。
grep "keyword" -rn | vim -