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?

Foi útil?

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)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top