在Vim中显示匹配数

search时,Google Chrome中有一个很好的function。 它会告诉您所search的关键字的匹配数量。 但是,在Vim中,我没有看到这样的function。 有人build议使用%s/pattern//gn或类似:

http://vim.wikia.com/wiki/Count_number_of_matches_of_a_pattern
无法计算Vim中匹配的数量

但是这真的很长! 当按'*','%'或使用'/'和'?'进行search时,我正在查找计数。

任何想法?

插件索引search 。

最新版本在这里 。

我不知道这样做的一个直接的方式,但你可以使用的方式:%s///使用最后的search作为默认模式:

 :nmap ,c :%s///gn 

然后,您应该能够search,然后点击,c来报告匹配的数量。

唯一的问题是*#忽略'smartcase' ,所以使用*之后结果可能会被忽略。 你可以通过按*然后按ENTER键 ,然后,c

@ Al的答案之一:如果你想让Vim自动在状态栏中显示,请尝试在vimrc中添加以下内容:

 let s:prevcountcache=[[], 0] function! ShowCount() let key=[@/, b:changedtick] if s:prevcountcache[0]==#key return s:prevcountcache[1] endif let s:prevcountcache[0]=key let s:prevcountcache[1]=0 let pos=getpos('.') try redir => subscount silent %s///gne redir END let result=matchstr(subscount, '\d\+') let s:prevcountcache[1]=result return result finally call setpos('.', pos) endtry endfunction set ruler let &statusline='%{ShowCount()} %<%f %h%m%r%=%-14.(%l,%c%V%) %P' 

这是一个便宜的解决scheme…我在Vim中使用了Find和Replace All。 没有花哨的脚本。 我做了一个查找X和用Xreplace全部。最后,Vim报告“在9892行2134replace”。 X出现了2134次。 使用:q! 在不保存的情况下退出文件。 没有伤害完成。

你已经有了很多的答案,但是在我看来,还有一个解决这个问题的方法。

这实际上是我前几天处理的事情。 我添加了一个函数和一个映射,以便当光标位于要计数的单词下方时,您可以点击映射,并返回匹配数。

function:

 " Count number of occurances of a word function Count(word) let count_word = "%s/" . a:word . "//gn" execute count_word endfunction 

而映射:

 " Count current word nmap <Leader>w <Esc>:call Count(expand("<cword>"))<CR> 

或者从@Albuild议您可以映射组合键写入大部分行,然后将光标移动到实际模式插入的位置:

:nmap,c ^ [:%s /// gn ^ [OD ^ [OD ^ [OD ^ [OD

其中'^ ['是Ctrl + V, Esc和'^ [OD'是Ctrl + V, Left

然后按',c'进入命令模式,input花样并将光标停留在第二个'/'上,准备插入花样。

 :vim[grep][!] /{pattern}/[g][j] {file} ... 

Vimgrep使用Vim的内置正则expression式search引擎,所以你可以重复使用Vim标准search命令中的模式。 所以,我首先用正常的方式testingsearch模式:/ {pattern} /

然后input以下内容:

 :vim /CTRL+r//g % 

CTRL+r/将在第一个斜线后插入最后的search模式。 状态行将显示(max),其中max是{pattern}的最大匹配数。 然后使用:cnext:cprevsearch下一个和上一个匹配项,并使用:cfirst:clast作为第一个和最后一个匹配项。 这4个命令可以重新映射,以使其更快执行。

这个插件就是这样做的。 https://github.com/osyo-manga/vim-anzu

当在vim中search一个单词时,它会在状态行上显示字数。 它也可以select显示旁边的search词,即。 this_is_my_sample_word(3/12)this_is_my_sample_word(7/12) 。 这基本上是说:这是12个事件中的第3或第7个事件。