我是 vim 的新手,仍在探索它的一些功能。我有 vimgrep 的问题。我可以搜索这样的模式,vimgrep /define/ **
以便它找到并打开下一个包含define
. 但我还不知道如何转到与我的模式匹配的下一个文件/行。任何指针?
问问题
16425 次
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
),则存在相同的命令,只需将首字母替换为c
an即可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 回答