在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
和:cprev
search下一个和上一个匹配项,并使用: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个事件。