formatting – volver a envolver automáticamente las líneas al escribir rebajas en VIM

Pregunta:

Muy a menudo, escribo rebajas en VIM, y habrá párrafos en esas rebajas. Para ayudar a mi edición, configuro mi Vim para ajustar una línea en 80 caracteres. Funciona bien si sigo escribiendo, pero el problema es que si necesito hacer alguna corrección, se vuelve muy molesto.

demo (tomado de la lógica de primer orden de wikipedia):

The adjective "first-order" distinguishes first-order logic from higher-order logic 
in which there are predicates having predicates or functions as arguments. In first-order 
theories, predicates are often associated with sets. In interpreted higher-order 
theories, predicates may be interpreted as sets of sets.

Hasta ahora tan bueno. Pero cuando revise el artículo, podría decidir agregar algo en el medio, por ejemplo:

The adjective "first-order" distinguishes first-order logic from higher-order logic 
in which there are predicates having predicates or functions as arguments,
or in which one or both of predicate quantifiers or function quantifiers are permitted.
In first-order theories, predicates are often associated with sets. In interpreted higher-order
theories, predicates may be interpreted as sets of sets.

la línea de aviso 3 es la que quiero envolver. Si lo hago en VIM, tendré que unir manualmente las líneas y volver a envolver todo el párrafo.

¿Alguien tiene idea de cómo hacer que VIM lo haga automáticamente?

Respuesta:

Aún más simple: la a bandera para 'formatoptions' permite el formateo automático de los puntos cada vez que se inserta o elimina texto. Consulte :help fo-table para obtener detalles sobre 'formatoptions' y :help autoformat .

:set formatoptions+=a

gq y gw formatearán las líneas sobre las que se mueve el siguiente movimiento.

Formatting is done with one of three methods:
                1. If 'formatexpr' is not empty the expression is
                   evaluated.  This can differ for each buffer.
                2. If 'formatprg' is not empty an external program
                   is used.
                3. Otherwise formatting is done internally.

                In the third case the 'textwidth' option controls the
                length of each formatted line

La diferencia entre los dos es que gq dejará el cursor en la primera línea que no gq en blanco de la última línea formateada. gw volverá a colocar el cursor donde comenzó.

Puede gggwG a gggwG manualmente el párrafo en el que se encuentra el cursor con gwap , o todo el documento con gggwG , aunque eso moverá el cursor gracias al gg .

Con un autocomando, puede hacer que el formateo ocurra automáticamente. Aquí hay un ejemplo que formatea el párrafo actual al salir del modo de inserción:

augroup myformatting
    autocmd!
    autocmd InsertLeave * normal gwap<CR>
augroup END

Hay otros desencadenantes de autocomando que puede encontrar que funcionen mejor para usted. Puede explorar las opciones en :help autocmd-events . Los más relevantes probablemente se encuentran bajo el subtítulo "varios".

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım