如何在使用模式之间跳转:vimgrep(Quickfix list)?
我是vim的新手,并且还在探索它的一些function。 我有一个vimgrep的问题。 我可以像这样search一个模式vimgrep /define/ **以便它find并打开包含一个define下一个文件。 但我还没有find如何去下一个匹配我的模式的文件/行。 任何指针?
quickfix列表的有用命令(括号括在可省略的部分命令中):
-
:cn[ext]和:cp[revious]跳转到下一个和上一个条目 -
:cnf[ile]和:cpf[ile]跳转到下一个和上一个文件 (如果quickfix列表没有按文件sorting,可以编写一个函数getqflist(),执行sorting,然后setqflist() -
:cr[ewind]和:cla[st]转到quickfix列表的开头或结尾 -
:col[der]和:cnew[er]将遍历历史的quickfix列表。
不用说,有很多其他的命令,你可以在:help quickfixfind它们。
我个人有以下地图:
| ø | SHIFT | CTRL ------+--------+---------+--------- <F11> | :cprev | :cpfile | :colder <F12> | :cnext | :cnfile | :cnewer
当然,如果你使用位置列表而不是quickfix列表( :lvimgrep ),则存在相同的命令,只需用l代替初始的c ,就是这样。
Vim 8增加 :
-
:cdo:在quickfix列表的所有条目上执行一个命令。 例如
:vim /foo/ *.cpp *.h *.hpp可以跟
:cdo s/pattern/replacement/g -
:cfdo:在quickfix列表中执行所有文件的命令。 例如,
:vim /foo/ *.cpp *.h *.hpp可以跟
:cfdo %s/2ndpattern/2ndreplacement/g
要跳转到下一个模式,可以使用:cnext 。 你可以反过来:cNext 。
我不确定一种方式,直到下一个文件自动跳过所有的事件,但你可以打开quickfix窗口:cwindow查看匹配列表,并通过在列表中的条目上按Enter键导航到这些匹配。