Po przeczytaniu help textwith
i help fo-table
spodziewał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ę A
i zacznę pisać.
Ale jeśli uderzę 02wi
i 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+=a
ale 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 NONE
to (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
źródło
vim -u NONE
aby zapobiec ładowaniu pliku vimrc. Czy to rozwiązuje problem? Jakiej wersji Vima używasz?paste
ustawiony przypadkowo? Spróbuj:set paste?
paste
nie jest ustawiony. Popaste
ustawieniu nie ma żadnego owijania.Odpowiedzi:
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:źródło