Problema: Quiero mantener los párrafos de mis archivos de texto dentro del las 80 lineas para facilitar su lectura.
Solucion: Vim sabe formatear texto con los comandos gw{motion} o
gq{motion}.
En modo normal podemos indicarle a Vim que formatee un area de texto mediante
gw{motion} o gq{motion} siendo gw un formateador interno de Vim el cual
respeta el actual filetype un formateador interno de Vim el cual respeta el
actual filetype y gq un formateador externo configurado mediante formatprg
o formatxpr.
Mas allá de estas diferencias solo cabe destacar que gw devuelve el cursor a
la posición previa al formateo mientras que gq no.
Por defecto se formatea a 80 caracteres máximo pero esto es configurable
mediante textwidth. Esto repercute también en nuevas lineas de texto ya que
Vim las truncara automáticamente al llegar al tope impuesto sin importar el tipo
de archivo que estemos editando.
:set textwidth=100Una solución a esto es setear dicha variable únicamente cuando la utilicemos o incluso podemos delegar a nuestro editor:
au BufNewFile,BufRead *.md setlocal textwidth=80Así como yy copia toda la linea donde se encuentra el cursor, podemos
ahorrarnos escribir un motion completo para gw cuando solo queremos trabajar
sobre la linea actual ejecutando gww.
Ejecutando gww sobre el siguiente texto:
# Antes
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et [cursor] dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
# Despues
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et [cursor] dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat.
[cursor] representa la posición de nuestro cursor al momento de ejecutar el comando.
Notar que no se borran los espacios extras entre
consecteturyadipisicing
Ya dijimos que gq utiliza un programa externo, pondremos entonces como ejemplo
a par
:set formatprg=par\ -w80Repitiendo el ejemplo anterior el resultado esta vez es diferente:
# Antes
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et [cursor] dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
# Despues
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis
nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
[cursor]
Otros ejemplos:
gwgg: Formatear desde la linea actual hasta el principio del documento.gwG: Formatear desde la linea actual hasta el final del documento.gwip: Formatear el párrafo actual.gwj: Formatear la linea actual y la siguiente hacia abajo.gwk: Formatear la linea actual y la siguiente hacia arriba.