我是vim的新手,还在探索它的一些功能。我有vimgrep的问题。我可以搜索这样的模式vimgrep /define/ **
,以便找到并打开包含define
的下一个文件。但我还不知道如何转到与我的模式匹配的下一个文件/行。有什么指针吗?
答案 0 :(得分:81)
quickfix列表的有用命令(括号中可忽略部分的括号):
:cn[ext]
和:cp[revious]
跳转到下一个和上一个条目:cnf[ile]
和:cpf[ile]
跳转到下一个和上一个文件(如果quickfix列表未按文件排序,您可以write a function that getqflist()
, performs a sort and then setqflist()
:cr[ewind]
和:cla[st]
转到quickfix list的开头或结尾:col[der]
和:cnew[er]
将遍历历史快速修复列表。毋庸置疑,还有很多其他命令,你可以在:help quickfix
发现它们。
我个人有以下地图:
| ø | SHIFT | CTRL
------+--------+---------+---------
<F11> | :cprev | :cpfile | :colder
<F12> | :cnext | :cnfile | :cnewer
当然,如果您使用位置列表而不是quickfix列表(:lvimgrep
),则存在相同的命令,只需将初始c
替换为l
即可。
Vim 8 Additions :
:cdo
:对quickfix列表的所有条目执行命令。例如:vim /foo/ *.cpp *.h *.hpp
后面可以跟{
:cdo s/pattern/replacement/g
:cfdo
:对quickfix列表中的所有文件执行命令。例如,:vim /foo/ *.cpp *.h *.hpp
后面可以跟{
:cfdo %s/2ndpattern/2ndreplacement/g
答案 1 :(得分:9)
要跳转到下次出现的模式,您可以使用:cnext
。您可以使用:cNext
进行反向。
我不确定自动跳过所有事件直到下一个文件的方法,但您可以使用:cwindow
打开quickfix窗口以查看匹配列表并通过点击导航到这些匹配项在列表中的条目上输入。