Contagem de ocorrências no Vim sem marcar o buffer alterado
-
09-06-2019 - |
Pergunta
Para saber quantas vezes um padrão existe no buffer atual, eu faço:
:%s/pattern-here/pattern-here/g
Ele dá o número de ocorrências do padrão, mas é obviamente complicado e também tem o efeito colateral de configuração do 'alterado' status.
Existe uma forma mais elegante de contar?
Solução
Para evitar a substituição, deixar o segundo padrão, vazio, e adicionar o "n" bandeira":
:%s/pattern-here//gn
Este é descrito como um oficial de ponta.
Outras dicas
:help count-items
No VIM 6.3, aqui está como fazê-lo.
:set report=0
:%s/your_word/&/g # returns the count without substitution
No VIM 7.2, aqui está como fazê-lo:
:%s/your_word/&/gn # returns the count, n flag avoids substitution
:!cat %| grep -c "pattern"
Não é exatamente vim de comando, mas ele vai te dar o que você precisa vim.
Você pode mapeá-lo para o comando, se você precisar usá-lo com frequência.
O vimscript IndexedSearch melhora a Vim procurar comandos para exibir "No match #N de M corresponde a".
Coloque o cursor sobre a palavra que você deseja contar e execute o seguinte.
:%s/<c-r><c-w>//gn
Ver :h c_ctrl-r_ctrl-w
vimgrep é seu amigo aqui:
vimgrep pattern %
Mostra:
(1 of 37)