it-swarm.cn

计算Vim中的出现次数而不标记缓冲区已更改

为了知道当前缓冲区中存在模式的次数,我做:

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

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

是否有更优雅的方式来计算?

109
Paul Oyster

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

:%s/pattern-here//gn

这被描述为 官方提示

164
Bruno De Fraine
: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
8
konyak
:!cat %| grep -c "pattern"

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

5
Ilya

Vimscript IndexedSearch 增强了Vim搜索命令以显示“在M匹配中匹配#N”。

2
redacted

将光标放在要计数的Word上,然后执行以下操作。

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

:h c_ctrl-r_ctrl-w

1
Sagar Jain