Me gusta escribir tutoriales y artículos para un foro de programación que frecuente. Este foro tiene un límite de caracteres por publicación. He usado Notepad ++ en el pasado para escribir publicaciones y mantiene un recuento de caracteres en vivo en la barra de estado. Estoy empezando a usar gVim más y realmente no quiero volver a Notepad ++ en este punto, pero es muy útil tener este recuento de caracteres. Si supero el conteo, generalmente termino pegando la publicación en Notepad ++ para poder ver cuándo he recortado lo suficiente para superar el límite.
He visto sugerencias que :set ruler
ayudarían, pero esto solo da el recuento de caracteres a través del índice de columna actual en la línea actual. Esto sería genial si no usara saltos de párrafo, pero estoy seguro de que estaría de acuerdo en que leer varios miles de caracteres en un párrafo no es cómodo.
Leí la ayuda y pensé que rulerformat
funcionaría, pero después de revisar el statusline
formato que usa, no vi nada que proporcione un recuento de caracteres para el búfer actual.
He visto que hay complementos que agregan esto, pero todavía estoy sumergiendo mis dedos en gVim y no estoy seguro de querer cargar complementos aleatorios antes de entender lo que hacen. Prefiero usar algo integrado en vim, pero si no existe, no existe.
¿Qué debo hacer para lograr mi objetivo? Si se trata de un complemento, ¿lo usa y qué tan bien funciona?
g CTRL-G
No sabía que esto existía. ¡Agradable!! [...] %
?sugiere que podrías hacer una prueba en seco de un ala de reemplazo
(que luego informa el número de caracteres coincidentes) o que le gusta
strlen()
el texto seleccionado visualmente:("es el registro sin nombre)
ya que puede llamar a una expresión en su línea de estado como
%{myfunc()}
ese podría ser un buen punto de partida. contar todo el tiempo puede llevar un poco de tiempo, ya que tendrías que seleccionar todo el texto y luego tirarlo, pero tal vez mostrar el número de bytes en el "registro" ya está bien para ti. Si realmente quieres saber el número de caracteres en el búfer: solo seleccione visualmente TODO el texto en el búfer y tírelo. Entonces, la solución sería:que le da el número de caracteres en el "registro" (que es idéntico al número de bytes si selecciona y tira del búfer actual).
fuente
g<CTRL-g>
método en la respuesta aceptada.Una mejora a la respuesta de mrucci:
Puede usarlo
wc
en Linux sin tener que guardar primero el archivo dirigiendo la:w
salida del comando de la siguiente manera:y puedes mapearlo a algo como lo menciona mrucci.
fuente
te dio
que también es una buena solución para su problema. simplemente vaya al final del búfer con Gy el número de bytes que se muestra en su línea de estado es el número de caracteres (por supuesto, no es cierto con caracteres de varios bytes). vuelve a donde viniste ctrlo.
fuente
set statusline+=\ %o\ %N
(curiosamente, no funciona para, por ejemplo, el elemento "t S") . Entonces, si ve que la línea de estado no ha cambiado, es porque tiene que ejecutarset laststatus=2
. Para mí, reemplazó la línea de estado transparente existente con la nueva, que es de color negro sólido y solo tiene un elemento de "conteo de bytes".Si tiene la costumbre de usar: w para guardar el archivo, cada vez que lo haga, el estado informará el número de caracteres escritos. Por ejemplo, al final de esta oración hice un: w (sí, estoy usando gvim para escribir esta nota) e informó: 245C escrito.
fuente
Puede agregar una expresión para mostrar el bytecount del búfer en la línea de estado con:
O puede cambiar la variable de opción directamente para evitar todo ese escape:
fuente
...%{ line2byte(line(\"$\")+1))-1 }
para que incluya los caracteres de la última línea en el recuento. Sin embargo, este enfoque no contará caracteres multibyte correctamente.Solución alternativa que he estado usando hasta que acepté la respuesta de mrucci:
Descubrí por accidente que cuando: w para guardar el archivo, el comando genera el número de bytes escritos. Esto es más o menos un recuento de personajes, por lo que hasta ahora ha sido lo suficientemente cercano. También me gusta la respuesta de mrucci, posiblemente más que esta porque también tiene un recuento de palabras.
fuente
Si mantiene una copia del archivo de su texto, simplemente escriba su texto en el disco; el recuento de caracteres se muestra de forma predeterminada.
Si no desea guardar un archivo, simplemente guardar el texto a
/dev/null
::w!/dev/null
.También puedes dejar que
wc
cuentes tus personajes::%!wc -c
- pero no olvides presionar Upara restaurar tu texto.Si necesita esto con frecuencia, simplemente asigne estos comandos a una secuencia de teclas:
:map #wc :w!/dev/null^[
- tenga en cuenta que^[
debe ingresarse como Ctrl+ V Esc.Como primer indicador del tamaño del texto, solo active los números de línea; admitido: esto necesita algo de aritmética mental ;-)
fuente
Después de tener esta pregunta y leer las respuestas (gracias mrucci) agregué estas líneas a mi archivo de inicialización .vimrc.
Lo dejo a vim: ayuda a los usuarios a descubrir lo que hacen.
Personalmente, me parece útil comenzar con las asignaciones de Vim; o, ya que rara vez los uso como el primer personaje de un comando.
fuente