web-development-kb-es.site

Contando las ocurrencias en Vim sin marcar el buffer cambiado

Para saber cuántas veces existe un patrón en el búfer actual, hago:

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

Proporciona el número de apariciones del patrón, pero obviamente es engorroso y también tiene el efecto secundario de establecer el estado "cambiado".

¿Hay una forma más elegante de contar?

109
Paul Oyster

Para evitar la sustitución, deje el segundo patrón en blanco y agregue la marca "n":

:%s/pattern-here//gn

Esto se describe como un consejo oficial .

164
Bruno De Fraine
:help count-items

En VIM 6.3, así es como lo haces.

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

En VIM 7.2, así es como lo harías:

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

No es exactamente el comando vim, pero le dará lo que necesita de vim.
Puede asignarlo al comando si necesita usarlo con frecuencia.

5
Ilya

El vimscript IndexedSearch mejora los comandos de búsqueda de Vim para mostrar "En la coincidencia #N fuera de M coincidencias".

2
redacted

Coloque el cursor en la palabra que desea contar y ejecute lo siguiente.

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

Ver :h c_ctrl-r_ctrl-w

1
Sagar Jain