it-swarm-pt.tech

Contando ocorrências no Vim sem marcar o buffer alterado

Para saber quantas vezes um padrão existe no buffer atual, eu faço:

:%s/pattern-here/pattern-here/g

Ele fornece o número de ocorrências do padrão, mas é obviamente complicado e também tem o efeito colateral de definir o status 'alterado'.

Existe uma maneira mais elegante de contar?

110
Paul Oyster

Para evitar a substituição, deixe o segundo padrão vazio e adicione o sinalizador "n":

:%s/pattern-here//gn

Isso é descrito como ma dica oficial .

165
Bruno De Fraine
:help count-items

Em VIM 6.3, veja como fazê-lo.

:set report=0
:%s/your_Word/&/g    # returns the count without substitution

Em VIM 7.2, veja como você faria isso:

:%s/your_Word/&/gn   # returns the count, n flag avoids substitution
8
konyak
:!cat %| grep -c "pattern"

Não é exatamente o comando vim, mas fornecerá o que você precisa do vim.
Você pode mapeá-lo para o comando se precisar usá-lo com freqüência.

5
Ilya

O vimscript IndexedSearch aprimora os comandos de pesquisa do Vim para exibir "Na correspondência nº N de M correspondências".

2
redacted

Coloque o cursor na palavra que você deseja contar e execute o seguinte.

:%s/<c-r><c-w>//gn

Vejo :h c_ctrl-r_ctrl-w

1
Sagar Jain