如何在使用时跳转模式:vimgrep(Quickfix list)?

yas*_*sar 54 vim vimgrep

我是vim的新手,还在探索它的一些功能.我有vimgrep的问题.我可以搜索vimgrep /define/ **这样的模式,以便找到并打开包含a的下一个文件define.但我还不知道如何转到与我的模式匹配的下一个文件/行.有什么指针吗?

Ben*_*oit 83

quickfix列表的有用命令(括号中可省略部分的括号):

  • :cn[ext]:cp[revious]跳转到下一个和上一个条目
  • :cnf[ile]:cpf[ile]跳转到下一个和上一个文件(如果quickfix列表没有按文件排序,你可以写一个函数getqflist(),执行排序然后setqflist()
  • :cr[ewind]:cla[st]转到quickfix列表的开头或结尾
  • :col[der]并且:cnew[er]将通过历史的quickfix列表进行迭代.

毋庸置疑,还有很多其他命令,你可以发现它们:help quickfix.

我个人有以下地图:

      | ø      | SHIFT   | CTRL
------+--------+---------+---------
<F11> | :cprev | :cpfile | :colder
<F12> | :cnext | :cnfile | :cnewer
Run Code Online (Sandbox Code Playgroud)

当然,如果你使用位置列表而不是quickfix列表(:lvimgrep)相同的命令存在,只需更换初始cl,就是这样.

Vim 8增加:

  • :cdo:对quickfix列表的所有条目执行命令.例如
    :vim /foo/ *.cpp *.h *.hpp可以跟着
    :cdo s/pattern/replacement/g
  • :cfdo:执行命令快速修复列表中的所有文件.例如,
    :vim /foo/ *.cpp *.h *.hpp可以跟着
    :cfdo %s/2ndpattern/2ndreplacement/g

  • 流行的[unimpaired.vim](http://www.vim.org/scripts/script.php?script_id=1590)插件将`:cprev`和`:cnext`映射到`[q`和`] q`.很少习惯. (7认同)

Ran*_*ris 10

要跳转到下一个可以使用的模式:cnext.你可以反过来:cNext.

我不确定自动跳过所有事件直到下一个文件的方法,但您可以打开quickfix窗口:cwindow以查看匹配列表并通过点击Enter列表中的条目导航到这些匹配.

  • `:cnfile`就是你想要的! (6认同)
  • @伯努瓦,确实如此.我会让你发布并获得奖励. (2认同)