如何使用Vim在文本文件中查找特定单词重复的次数。
例如,我想查看代码中“name”重复多少次:
"collection": "animals",
"fields": [
{
"field": "id",
"name": ""
},
{
"field": "age",
"name": ""
},
{
"field": "origin",
"name": ""
}
结果 - 3
答案 0 :(得分:6)
现在您可以使用:
set shortmess-=S
每次进行[x/y]
或/
搜索时,都会在右下角显示?
个计数。
Relavant section from the Vim help
请注意,如果搜索发现99个以上的结果,Vim会不幸地显示[x/>99]
:
由于这个原因,我个人使用google/vim-searchindex,该方法可用于任何数量的结果:
(默认情况下,该插件仅限于“仅”少于10万行的文件,不过可以通过let g:searchindex_line_limit=1000000
进行调整。)
答案 1 :(得分:5)
答案 2 :(得分:1)
我有一个可以通过多种方式使用的计数单词功能
fun! CountWordFunction()
try
let l:win_view = winsaveview()
exec "%s/" . expand("<cword>") . "//gn"
finally
call winrestview(l:win_view)
endtry
endfun
command! -nargs=0 CountWord :call CountWordFunction()
所以,你可以映射它:
nnoremap <F3> :CountWord<CR>
即使鼠标双击......
" When double click a word vim will hightlight all other ocurences
" see CountWordFunction()
" [I shows lines with word under the cursor
nnoremap <silent> <2-LeftMouse> :let @/='\V\<'.escape(expand('<cword>'), '\').'\>'<cr>:set hls<cr>:CountWord<cr>
nnoremap <Leader>* :let @/='\V\<'.escape(expand('<cword>'), '\').'\>'<cr>:set hls<cr>:CountWord<cr>
答案 3 :(得分:1)
使用以下命令。
:%s/pattern//ng
g
代表全局,它将与每行多次匹配。
输出显示为
13 matches on 10 lines
:%s/pattern//n
输出显示为
10 matches on 10 lines
答案 4 :(得分:0)
我愿意
:g/pattern/d
这将显示在左下角删除的次数。
然后您可以按u
答案 5 :(得分:0)
我的SearchPosition plugin将打印以下输出(光标位于第一个匹配项上,并显示<A-m>
映射或:SearchPosition name
命令):
On sole match in this line, 2 in following lines within 5,13 for /\<name\>/
它以此处提供的其他解决方案为基础,并专门为轻松获取此类统计信息而编写。