Contar ocurrencias en Vim sin marcar el búfer cambiado
-
09-06-2019 - |
Pregunta
Para saber cuántas veces existe un patrón en el búfer actual, hago:
:%s/pattern-here/pattern-here/g
Da el número de apariciones del patrón, pero obviamente es engorroso y también tiene el efecto secundario de establecer el estado "cambiado".
¿Existe una forma más elegante de contar?
Solución
Para evitar la sustitución, deje el segundo patrón vacío y agregue la bandera "n":
:%s/pattern-here//gn
Esto se describe como un consejo oficial.
Otros consejos
:help count-items
En VIM 6.3, así es como se hace.
: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
:!cat %| grep -c "pattern"
No es exactamente un comando de vim, pero le dará lo que necesita de vim.
Puede asignarlo al comando si necesita usarlo con frecuencia.
el vimscript Búsqueda indexada mejora los comandos de búsqueda de Vim para mostrar "En la coincidencia #N de M coincidencias".
Coloca el cursor sobre la palabra que deseas contar y ejecuta lo siguiente.
:%s/<c-r><c-w>//gn
Ver :h c_ctrl-r_ctrl-w
vimgrep es tu amigo aquí:
vimgrep pattern %
Muestra:
(1 of 37)