113

为了知道当前缓冲区中存在多少次模式,我这样做:

:%s/pattern-here/pattern-here/g

它给出了模式的出现次数,但显然很麻烦,并且还具有设置“已更改”状态的副作用。

有没有更优雅的计数方式?

4

6 回答 6

169

为避免替换,请将第二个模式留空,并添加“n”标志:

:%s/pattern-here//gn

这被描述为官方提示

于 2008-09-16T09:18:01.693 回答
9
:help count-items

在 VIM 6.3 中,您可以这样做。

:set report=0
:%s/your_word/&/g    # returns the count without substitution

在 VIM 7.2 中,你会这样做:

:%s/your_word/&/gn   # returns the count, n flag avoids substitution
于 2013-01-31T21:49:40.420 回答
5
:!cat %| grep -c "pattern"

它不完全是 vim 命令,但它会为您提供 vim 所需的内容。
如果需要经常使用,可以将其映射到命令中。

于 2008-09-16T09:24:28.947 回答
2

vimscript IndexedSearch增强了 Vim 搜索命令以显示“At match #N out of M matches”。

于 2009-07-22T21:16:11.553 回答
1

将光标放在要计数的单词上并执行以下操作。

:%s/<c-r><c-w>//gn

:h c_ctrl-r_ctrl-w

于 2015-09-17T15:26:45.413 回答
-1

vimgrep 是你的朋友:

vimgrep pattern %

显示:

(1 of 37)
于 2011-11-09T23:32:45.273 回答