La única razón por la que alguna vez edité un archivo de texto en Pico o Nano, y no en Vim fue su comando "Justificar" ^J. Volvería a formatear un párrafo de texto, creando saltos de línea en los saltos de palabra para que el texto flote bien en la pantalla de ancho fijo: formatee el texto para que se ajuste a 80 columnas predefinidas, creando saltos de línea solo entre palabras. Como la función era limitada, era muy útil, ya sea formatear largos bloques de comentarios, archivos de documentación o simplemente reemplazar una línea interminable de parámetros con algo más legible.
¿Puedo hacer algo así en Vim?
'formatprg'
opción.Hay un gran VimCast sobre este tema.
http://vimcasts.org/episodes/formatting-text-with-par/
Básicamente, necesitas instalar
par
:Y luego, ya que desea que las columnas se envuelvan en 80 columnas:
Ahora puedes usar el
gq
operador, como en otras respuestas (por ejemplogqip
), y usará Par en lugar del formateador incorporado de Vim.Par es bastante avanzado, y formateará comentarios como este muy bien:
fuente
De
:help usr_25
:Entonces, todo lo que tienes que hacer es correr
y luego escribe
para justificar el texto en todo el archivo.
(Por supuesto, también puede agregar
ru macros/justify.vim
a su .vimrc para no tener que escribirlo todo el tiempo).Nota : esto no agrega saltos de línea para usted. Tienes que agregarlos manualmente con
gq
. Para esto, también debe establecer eltextwidth
(valor predeterminado es 0) a su valor deseado a través dey, si lo desea, ajuste automático de texto configurando
t
-flag medianteSi lo desea, puede configurar una asignación en su .vimrc para que haga todo por usted:
Esto se mueve al comienzo del archivo (
gg
), ajusta todas las líneas (gq
hastaG
) y luego_j
ustifica el texto.fuente
:set fo+=a
opción muy útil para el reformateo automático de todo el párrafo. Echa un vistazo a:help fo-table
otras opciones. También hay un buen video tutorial aquí ._j
mapeo agregado por la macro parece justificar todo el archivo para mí, o puede limitarse con una selección visual lineal.Mientras que la ayuda de nano llama al
^J
comando "Justificar", en realidad no justifica el texto, reformatea el texto rompiendo las líneas antes del margen derecho de la pantalla (o en alguna columna configurable, supongo).Puede hacer lo mismo en VIM configurando la variable
textwidth
, desde:help 'textwidth'
:Es decir: mientras escribe, si una línea es más larga que los
textwidth
caracteres, VIM ajustará la línea en el primer espacio para mantener la longitud de la línea menor o igual atextwidth
.Para que esto funcione, la opción
formatoptions
debe contener la letrat
. Consulte:help 'formatoptions'
y:help fo-table
las opciones disponibles, por ejemplo, puede interesarle lac
opción de hacer que el formato funcione con comentarios.Editar : se puede realizar la misma operación, sin la necesidad de poner
t
enformatoptions
, usando el comandogw{motion}
, se formatea el texto entre la posición actual del cursor y la posición del cursor después{motion}
. Elgw
comando está disponible también en modo visual, formatea el texto seleccionado.fuente
Aquí hay dos opciones fáciles:
!fmt
!}fmt
Ambos envían un bloque de texto a Unix
fmt
, vea lasman fmt
opciones. Puede pasar argumentos de opción desde vim. Por ejemplo, para formatear un bloque de 50 caracteres de ancho, escriba!}fmt -w 50
.fuente
:%!fmt
y deshaciendo con uno solou
si no le gusta el resultado.Marque el texto usando el comando visual y luego use:
donde 40 es el ancho de la columna y
j
significa justificar.fuente
par
) y por qué funciona su solución. Es posible que desee agregar más detalles para mejorar la calidad de su respuesta y hacerla más útil para futuros lectores.