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


32

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

:grep Ryan *.txt

输出如下:

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

如果按回车键,它将带我回到编辑器。我真正想做的是能够打开这些文件之一,然后跳到找到字符串的地方。有没有办法做到这一点?该1 of 3部分使我认为有一种方法可以查看结果,但是我不知道可以使用哪些命令。有人能对此有所启示吗?

Answers:


34

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

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

:help grep
:help quickfix.txt

在quickfix列表中键入:cn:cp前进和后退可能很尴尬,因此我使用以下映射:

nmap <silent> <C-N> :cn<CR>zv
nmap <silent> <C-P> :cp<CR>zv

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


好答案,谢谢!顺便说一句,您可以使用vim grep在文件夹中进行递归搜索吗?
Marplesoft

只要您在Unix系统上运行,就可以向Vim :grep添加可以添加到grep从Shell执行的命令中的任何参数。因此,您可以使用来遍历当前目录中及其下方的所有.txt文件:grep -R --include=*.txt Ryan .。您也可以使用Vim的:vimgrep命令执行递归搜索,但是参数不同,由于它比慢,因此我很少使用:grep
garyjohn
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.