Show Count of Matches in Vim
当你进行搜索时,谷歌Chrome有一个很好的功能。它告诉你搜索关键字的匹配数。然而,在Vim中,我没有看到这样的特性。有些人建议使用
http://vim.wiki a.com/wiki/count_number_of_匹配_a_模式无法计算VIM中的匹配数
但那真的很长!!当按"*"、"%",或使用"/"和"?"进行任何搜索时,我正在查找计数。.
有什么想法吗?
插件索引搜索。
这里是最新版本。
我不知道一种直接的方法,但是您可以使用
1 | :nmap ,c :%s///gn |
然后,您应该能够进行搜索,然后点击
唯一的问题是
@al的答案中还有一个:如果您想让vim在状态行中自动显示它,请尝试将以下内容添加到vimrc中:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | 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' |
这是一个廉价的解决方案…我用查找和替换VIM中的所有内容。没有花哨的脚本。我找到了x,并用x替换了所有。最后,vim报告"9892行上的2134个替换"。X出现2134次。用途:Q!退出文件而不保存。没有任何伤害。
你已经有很多答案了,但在我看来还是有一个对这个问题采取更多的办法。
这实际上是我几天前必须处理的事情。我添加了一个函数和一个映射以这样的方式,当光标位于要计数的单词下时,您可以点击映射。它返回匹配的数目。
功能:
1 2 3 4 5 | " Count number of occurances of a word function Count(word) let count_word ="%s/" . a:word ."//gn" execute count_word endfunction |
地图:
1 2 | " Count current word nmap <Leader>w <Esc>:call Count(expand("<cword>"))<CR> |
或者,根据@al的建议,您可以映射键组合以写入大部分行,然后将光标移动到插入实际图案的位置:
:nmap ,c ^[:%s///gn^[OD^[OD^[OD^[OD
其中"^["是ctrl+v,esc,"^[od"是ctrl+v,left
然后按"c"将进入命令模式,输入模式并将光标停留在第二个"/"上,准备插入模式。
这个插件就是这么做的。https://github.com/osyo-manga/vim-anzu
在VIM中搜索单词时,它将在状态线上显示单词计数。它还可以选择显示在搜索词的旁边,即,这个_是_my_sample_word(3/12),或者这个_是_my_sample_word(7/12)。这基本上是说:这是12个事件中的第3个或第7个。
1 | :vim[grep][!] /{pattern}/[g][j] {file} ... |
Vimgrep使用Vim的内置regex搜索引擎,因此您可以重用Vim标准搜索命令中的模式。因此,我首先使用:/模式以正常方式测试搜索模式。/
然后输入以下内容:
1 | :vim /CTRL+r//g % |
其中,