如何显示光标下当前匹配模式的出现次数? 例如:
aa
bb
aab searching aa, cursor is here, show 2.
aa
bb
如何在行后插入数字2。 “aab” - > “aab 2”
答案 0 :(得分:3)
这是一个函数和一个映射来完成这项工作(将这些行添加到.vimrc的末尾;它至少需要在它之前设置vim 7.4和nocompatible
):
nnoremap X :call Count( '<C-R>=expand( '<cWORD>' )<CR>' )<CR>
function! Count( word )
redir => cnt
silent exe '%s/' . a:word . '//n'
redir END
silent exe 's/.*/& ' . matchstr( cnt, '\d\+' ) . '/'
endfunction
如果您按WORD上的X
(以空格字符为界面),Count
函数会将文件中相同字词的计数添加到结尾处实际的一行。
要添加序号,请在映射中将Count
更改为NthCount
,并将这些行添加到.vimrc:
function! NthCount( word )
redir => nth
silent exe '0,.s/' . a:word . '//n'
redir => cnt
silent exe '%s/' . a:word . '//n'
redir END
silent exe 's/.*/& ' . matchstr( nth, '\d\+' ) . '/'
echo a:word . ': ' . matchstr( nth, '\d\+' ) . '/' . matchstr( cnt, '\d\+' )
endfunction
例如,在第一个bb
:
aa
bb 1
aab
aa
bb
-- STATUSLINE --
bb: 1/2