我刚开始学习使用vim,正在探索一些功能。我遇到了一个问题,就是在使用vimgrep时。我可以像这样搜索一个模式:vimgrep /define/ **
,然后它会找到并打开下一个包含define
的文件。但是我还没有找到如何跳转到下一个符合我的模式的文件或行。有什么指针吗?
快速修复列表的相关命令(方括号中的部分可以省略):
:cn[ext]
和 :cp[revious]
跳转到下一个和上一个条目:cnf[ile]
和 :cpf[ile]
跳转到下一个和上一个文件 (如果快速修复列表没有按文件排序,你可以编写一个函数,使用 getqflist()
进行排序,然后使用 setqflist()
重新设置列表):cr[ewind]
和 :cla[st]
跳转到快速修复列表的开头或结尾:col[der]
和 :cnew[er]
将遍历历史快速修复列表。当然还有很多其他命令,你可以在 :help quickfix
中发现它们。
个人建议使用以下映射:
| ø | SHIFT | CTRL
------+--------+---------+---------
<F11> | :cprev | :cpfile | :colder
<F12> | :cnext | :cnfile | :cnewer
当然,如果你使用位置列表而不是Quickfix列表(:lvimgrep),相同的命令存在,只需将初始的“c”替换为“l”即可。要跳转到下一个匹配项,您可以使用:cnext
命令。如果需要反向查找,则可以使用:cNext
。
我不确定有没有一种自动跳过所有匹配项直到下一个文件的方法,但是您可以使用:cwindow
命令打开快速修复窗口,以查看匹配项列表,并通过在列表中选择条目并按下Enter键来导航到这些匹配项。
:cprev
和:cnext
映射到了[q
和]q
。很容易上手。 - glts[<C-q>
和]<C-q>
映射到:cpfile
和:cnfile
。 - Jim Stewart