58

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

4

2 回答 2

90

用于快速修复列表的有用命令(命令可省略部分的括号):

  • :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

当然,如果您使用位置列表而不是快速修复列表 ( :lvimgrep),则存在相同的命令,只需将首字母替换为can即可l

Vim 8 新增功能

  • :cdo:对快速修复列表的所有条目执行命令。例如
    :vim /foo/ *.cpp *.h *.hpp可以跟随
    :cdo s/pattern/replacement/g
  • :cfdo:对快速修复列表中的所有文件执行命令。例如,
    :vim /foo/ *.cpp *.h *.hpp可以跟随
    :cfdo %s/2ndpattern/2ndreplacement/g
于 2011-10-24T19:15:24.343 回答
10

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

我不确定是否有办法自动跳过所有匹配项,直到下一个文件自动出现,但您可以打开快速修复窗口:cwindow以查看匹配列表并通过点击Enter列表中的条目导航到这些匹配项。

于 2011-10-24T19:06:49.360 回答