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=100
Una 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=80
Así 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
consectetur
yadipisicing
Ya dijimos que gq
utiliza un programa externo, pondremos entonces como ejemplo
a par
:set formatprg=par\ -w80
Repitiendo 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.