Hay dos maneras en que esto se puede lograr, la forma pura de vimscript y la wc
forma.
El camino puro vim
Puede usar el comando de búsqueda y reemplazo para hacer esto. Por ejemplo:
:%s/\<\w\{-}\>//gn
Lo que esto hace es en lugar de reemplazar un patrón dado con algo, solo cuenta las ocurrencias del patrón. Esto se debe a la n
bandera. Para contar las palabras en una sección específica (en este caso, líneas 5 a 15), puede hacer algo como esto:
:5,15s/\<\w\{-}\>//gn
Esto elimina la necesidad de tirar del contenido de una selección a un registro. Para ver más posibilidades de lo que se puede poner en su lugar 5-15
, lea el tema de ayuda cmdline-ranges
. Si desea hacer esto a menudo, probablemente sea bueno crear una asignación (o comando) para ello. Además, si ha hlsearch
habilitado, es posible que desee ejecutar :nohlsearch
después para borrar el resaltado.
El wc
camino
Lo mismo se puede lograr con wc
. De la misma manera que puede usar cmdline-ranges
para seleccionar el área con el :s
comando, puede usarlos con comandos externos. Por ejemplo:
:5,15!wc -w
Esto ejecuta las líneas 5 a 15 a través del wc
comando. La desventaja de esto es que reemplaza ese rango de líneas con la salida del comando. Puede deshacer este cambio presionando u
. También tenga en cuenta que la solución vimscript puede no funcionar con diferentes idiomas, ya \w
que no coincide con lo que normalmente serían caracteres de palabras en otros idiomas. wc
puede hacerlo mejor en esto que \w
. Además, aquí hay un comando sofisticado para hacerlo más rápido:
command -range=% -addr=lines WordCount execute '<count>!wc -w' | .y a | undo | echo @a
Tenga en cuenta que esto cambia el a
registro.
Nota
Parece que esto también se puede lograr en modo visual con la g<C-g>
combinación de teclas. Vea la respuesta de Carpetsmoker para una explicación de esto.