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

时间:2008-09-16 08:59:57

标签: vim

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

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

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

有更优雅的计算方法吗?

6 个答案:

答案 0 :(得分:163)

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

:%s/pattern-here//gn

这被描述为an official tip

答案 1 :(得分:8)

: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

答案 2 :(得分:5)

:!cat %| grep -c "pattern"

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

答案 3 :(得分:2)

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

答案 4 :(得分:1)

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

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

请参阅:h c_ctrl-r_ctrl-w

答案 5 :(得分:-1)

vimgrep是你的朋友:

vimgrep pattern %

节目:

(1 of 37)