Automatyczne formatowanie: zawijanie później w linii podczas wstawiania tekstu

9

Po przeczytaniu help textwithi help fo-tablespodziewałem się, że kiedy ustawię

set textwidth=20  " for demonstration
set formatoptions=tcq

wtedy wstawianie tekstu zawsze ostatecznie powoduje zawijanie się linii, ale tak nie jest. Zawijanie odbywa się tylko na (lub wcześniej) kursorze. A jeśli wkleję, owijanie wcale się nie dzieje.

Przykład (Vim 7.4):

12345678901234567890
This is a long line

Linia zostanie automatycznie zawinięta, jeśli kliknę Ai zacznę pisać.

Ale jeśli uderzę 02wii napiszę „wciąż”, nie zawinie się:

12345678901234567890
This is still a long line

Muszę wpisać kolejne 7 znaków, zanim się zawinie, a następnie problem będzie kontynuowany w następnym wierszu:

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

Wklejanie nie powoduje również zawijania:

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

Myślę, że chcę, set fo+=aale dotyczy to poziomu akapitu, podczas gdy nie chcę, aby automatyczne formatowanie jednej linii rozprzestrzeniało się na inne linie.

A może brakuje mi opcji?

Żeby było jasne, po uruchomieniu wpisuję vim -u NONEto (mniej komentarzy):

: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
źródło
1
Wydaje mi się, że to działa dobrze. Uruchomiłem Vima, vim -u NONEaby zapobiec ładowaniu pliku vimrc. Czy to rozwiązuje problem? Jakiej wersji Vima używasz?
Martin Tournoij
Nie, to nie pomaga. Vim 7.4 na Windows i Ubuntu.
mgiuffrida
Jest pasteustawiony przypadkowo? Spróbuj:set paste?
Volker Siegel,
@ VolkerSiegel nie, pastenie jest ustawiony. Po pasteustawieniu nie ma żadnego owijania.
mgiuffrida

Odpowiedzi:

2

Znalazłem częściowe rozwiązanie, używając formatoptions=tcqaw. Zasadniczo nadal automatycznie zawijasz akapity, ale akapit kończy się, gdy linia nie ma końcowych białych znaków, co jest odpowiednie w wielu przypadkach.

Korzystając z twojego przykładu (z niewielką modyfikacją, bez cofania i używania „ <SPACE>To ...”) otrzymuję ten wynik:

This is still a long  
This is pasted and 
not wrapped
line
Beka
źródło