Hay dos maneras en que esto se puede lograr, la forma pura de vimscript y la wcforma.
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 nbandera. 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 hlsearchhabilitado, es posible que desee ejecutar :nohlsearchdespués para borrar el resaltado.
El wccamino
Lo mismo se puede lograr con wc. De la misma manera que puede usar cmdline-rangespara seleccionar el área con el :scomando, puede usarlos con comandos externos. Por ejemplo:
:5,15!wc -w
Esto ejecuta las líneas 5 a 15 a través del wccomando. 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 \wque no coincide con lo que normalmente serían caracteres de palabras en otros idiomas. wcpuede 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 aregistro.
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.