Me pregunto ¿hay alguna manera de contar los símbolos resaltados vim
(incluidos los espacios en blanco)?
ACTUALIZAR
Muestra el recuento de filas si mi selección está en varias filas. Necesito los símbolos cuentan.
A menos que me falte algo, Vim ya lo hace. Si resalto algo de texto usando el mouse o escribiendo v
y moviendo el cursor, veo en la parte inferior de la pantalla
- VISUAL - 12
donde el número a la derecha es el número de caracteres resaltados. Esto solo funciona si la selección está en una sola fila, de lo contrario, muestra el recuento de filas.
También puede seleccionar visualmente alguna región de texto y tipo g Ctrl-Gque mostrará el número de líneas, palabras y bytes seleccionados.
set showcmd
a suvimrc
para habilitarlo.Vim cambia entre mostrar el recuento de caracteres y el recuento de líneas para el texto visualizado dependiendo de qué y cómo visualiza (vim 7.4 parcheado a septiembre de 2015)
Si visualiza más de una línea, solo muestra el recuento de líneas
fuente
v
cambios normales de recuento de caracteres a recuento de líneas si la selección abarca varias líneas. Sin embargo,g CTRL-G
hace bien el trabajo.Primero tira la selección actual (en el búfer x)
Luego, muestra la longitud de ese búfer:
strlen(@x)
(El - VISUAL - que se muestra en la línea de estado lo oculta, por lo que debemos agregar una nueva línea)
Resalta el rango visual anterior:
gv
Esto no tiene en cuenta si el modo visual era el modo de línea, carácter o bloque, pero es suficiente para la mayoría de los casos.
fuente
Veo en su captura de pantalla que está ejecutando en Windows, por lo que esta respuesta puede no serle tan útil. Pero para otros ...
Una característica infrautilizada (IMO) de Vim es dejar que los comandos externos hagan el trabajo pesado.
Para este caso, si está en un sistema similar a UNIX, puede usar el
wc
comando para hacerlo.La forma más simple es reemplazar el texto seleccionado con la salida del comando, escribiendo (con el texto seleccionado):
(luego presione enter).
Esto se mostrará en su línea de comando como:
Una vez que haya leído la información, puede deshacerla
u
para volver a donde comenzó.Nota: Este procesamiento se realiza solo en líneas completas . Si quieres líneas parciales, creo que @ garyjohn's
g_CTRL-G
es tu mejor opción .Puede evitar la necesidad de deshacer ejecutando en su lugar:
Esto "escribe" las líneas seleccionadas en la entrada estándar del comando, y la salida del comando se mostrará en un nuevo búfer temporal, dejando intacto el original. Ver
:help :write_c
para más información.Nota: Recibí la
:write_c
información de: /programming/1237780/vim-execute-shell-command-without-filteringAhora, más generalmente:
Este ejemplo con
wc
es bastante simplista, pero puedes imaginar cómo este es un enfoque poderoso. UNIX ya tiene muchos comandos de procesamiento de texto disponibles, y puede usarlos dentro de Vim con bastante facilidad, sin necesidad de tocar Vimscript (yech).Además, cualquier programa de línea de comandos que escriba que trate con stdin / stdout ahora no solo puede beneficiarlo en su terminal, sino también dentro de Vim.
Me encuentro, por ejemplo, corriendo
tidy
yjson-format
desde adentro de vim para hacer que los archivos que estoy viendo sean más legibles.Puede hacer lo mismo en Windows, pero Windows no tiene un conjunto de comandos tan rico incorporado. Sin embargo, siempre puede instalar GNUWin32 o similar para obtener esos beneficios.
fuente
Para una forma programática dentro de vimscript, esto funcionó para mí cuando la selección se limita a una sola línea:
(Utilizando en
virtcol(..)
lugar decol(..)
, de modo que funcione como se espera cuando:set ve=all
está activo).fuente