从 VIM 使用 grep 时,如何跳转到结果?

Mar*_*oft 34 linux vim command-line

在 VIM 中使用 grep 插件时,我可以在当前目录中搜索一组文件中所有出现的字符串,如下所示:

:grep Ryan *.txt
Run Code Online (Sandbox Code Playgroud)

这会输出如下内容:

file1.txt:3:Ryan was here
file2.txt:10:Ryan likes VIM
file3.txt:5:superuser.com is a fav of Ryan
(1 of 3): Ryan was here
Press ENTER or type command to continue
Run Code Online (Sandbox Code Playgroud)

如果我按 Enter,它只会带我回到我的编辑器。我真正想做的是能够打开其中一个文件并跳转到找到该字符串的位置。有没有办法做到这一点?这1 of 3部分让我觉得有一种方法可以浏览结果,但我不知道我可以使用哪些命令。任何人都可以对此有所了解吗?

gar*_*ohn 36

当您按 ENTER 时,您应该会看到 file1.txt 的第 3 行。要跳转到下一场比赛,请执行:cn; 要跳转到上一个匹配项,请执行:cp。执行:copen将打开一个包含匹配列表的窗口。将光标移动到所需的匹配项,然后按 ENTER 跳转到该匹配项。

有关使用的更多信息:grep,请参见

:help grep
:help quickfix.txt
Run Code Online (Sandbox Code Playgroud)

在 quickfix 列表中输入:cn:cp向前和向后移动可能很尴尬,所以我使用这些映射:

nmap <silent> <C-N> :cn<CR>zv
nmap <silent> <C-P> :cp<CR>zv
Run Code Online (Sandbox Code Playgroud)

此外,该:grep命令不是插件;它是 Vim 的一部分。