Formato automático: ajuste posterior en la línea al insertar texto

9

Después de leer help textwithy help fo-table, esperaba eso cuando configuro

set textwidth=20  " for demonstration
set formatoptions=tcq

luego insertar texto siempre ocasionaría que una línea se ajuste, pero ese no es el caso. El ajuste solo ocurre en (o antes) mi cursor. Y si pego, el envoltorio no ocurre en absoluto.

Ejemplo (Vim 7.4):

12345678901234567890
This is a long line

La línea se ajustará automáticamente si presiono Ay empiezo a escribir.

Pero si presiono 02wiy escribo "still", no se ajusta:

12345678901234567890
This is still a long line

Tengo que escribir otros 7 caracteres antes de que se ajuste, y luego el problema continúa en la siguiente línea:

12345678901234567890
This is still more <-- it wraps here
typing and again a long line

Pegar tampoco desencadena una envoltura:

12345678901234567890
This is a long line This text is pasted and not wrapped

Creo que lo que quiero es set fo+=apero eso se aplica a nivel de párrafo, mientras que no quiero que el formateo automático de una línea se extienda a otras líneas.

¿O me falta una opción?

Para ser claros, después del lanzamiento vim -u NONE, esto es lo que escribo (menos comentarios):

:set textwidth=20<CR>
:set formatoptions=tcq<CR>
iThis is a long line<ESC>
02wistill <ESC>                " no wrap happens, but I'd like it to
u
:let @r = "This text is pasted and not wrapped"<CR>
$"rp                           " no wrap happens, but I'd like it to
mgiuffrida
fuente
1
Esto parece funcionar bien para mí. vim -u NONEInicié Vim con para evitar cargar un archivo vimrc. ¿Esto te soluciona el problema? ¿Qué versión de Vim estás usando?
Martin Tournoij
No, eso no ayuda. Vim 7.4 en Windows y Ubuntu.
mgiuffrida
Se pasteestablece, accidentalmente? Prueba:set paste?
Volker Siegel
@VolkerSiegel no, pasteno está configurado. Cuando pastese establece, no ocurre ningún ajuste.
mgiuffrida

Respuestas:

2

Encontré una solución parcial, usando formatoptions=tcqaw. Básicamente, sigue ajustando automáticamente los párrafos, pero un párrafo termina cuando la línea no tiene espacios en blanco al final, lo cual es adecuado para muchos casos.

Usando su ejemplo (con una ligera modificación, sin deshacer y usando " <SPACE>Esto ...") obtengo este resultado:

This is still a long  
This is pasted and 
not wrapped
line
Beka
fuente