如何在使用模式之间跳转: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键导航到这些匹配。