在Vim中计数出现,而不标记缓冲区已更改
为了知道当前缓冲区中有多less模式存在,我做:
:%s/pattern-here/pattern-here/g
它给出了模式的出现次数,但是显然很麻烦,也有设置“改变”状态的副作用。
有一个更优雅的方法来计数?
为了避免replace,将第二个模式留空,并添加“n”标志:
:%s/pattern-here//gn
这被描述为官方提示 。
: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
:!cat %| grep -c "pattern"
这不完全是vim的命令,但它会给你你需要从vim。
如果需要频繁使用,可以将其映射到该命令。
vimscript IndexedSearch增强了Vimsearch命令以显示“在匹配#N中M匹配”。
将光标置于要计数的字上并执行以下操作。
:%s/<cr><cw>//gn
请参阅:h c_ctrl-r_ctrl-w
vimgrep是你的朋友在这里:
vimgrep pattern %
显示:
(1 of 37)