Automatisches Formatieren: Beim Einfügen von Text später in eine Zeile umbrechen


9

Nach dem Lesen help textwithund habe help fo-tableich das erwartet, als ich eingestellt habe

set textwidth=20  " for demonstration
set formatoptions=tcq

Wenn Sie dann Text einfügen, wird immer eine Zeile umbrochen, aber das ist nicht der Fall. Das Umschließen erfolgt nur an (oder vor) meinem Cursor. Und wenn ich einfüge, kommt das Wickeln überhaupt nicht vor.

Beispiel (Vim 7.4):

12345678901234567890
This is a long line

Die Zeile wird automatisch umbrochen, wenn ich drücke Aund mit der Eingabe beginne.

Aber wenn ich drücke 02wiund "still" tippe, wird es nicht umbrochen:

12345678901234567890
This is still a long line

Ich muss weitere 7 Zeichen eingeben, bevor es umbrochen wird, und dann geht das Problem in der nächsten Zeile weiter:

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

Das Einfügen löst auch keinen Wrap aus:

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

Ich denke, was ich will, ist, set fo+=aaber das gilt auf Absatzebene, während ich nicht möchte, dass die automatische Formatierung einer Zeile auf andere Zeilen übertragen wird.

Oder fehlt mir eine Option?

Um klar zu sein, tippe vim -u NONEich nach dem Start Folgendes ein (weniger Kommentare):

: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

1
Das scheint für mich gut zu funktionieren. Ich habe Vim mit gestartet vim -u NONE, um das Laden einer vimrc-Datei zu verhindern. Behebt dies das Problem für Sie? Welche Vim-Version verwenden Sie?
Martin Tournoij

Nein, das hilft nicht. Vim 7.4 unter Windows und Ubuntu.
mgiuffrida

Ist pasteversehentlich eingestellt? Versuchen Sie:set paste?
Volker Siegel

@VolkerSiegel nein, pasteist nicht gesetzt. Wenn pasteeingestellt, erfolgt überhaupt keine Umhüllung.
mgiuffrida

Antworten:


2

Ich bin auf eine Teillösung gestoßen, bei der formatoptions=tcqaw. Grundsätzlich werden Absätze immer noch automatisch umbrochen, aber ein Absatz endet, wenn die Zeile kein nachfolgendes Leerzeichen enthält, was für viele Fälle geeignet ist.

Anhand Ihres Beispiels (mit einer geringfügigen Änderung, ohne Rückgängigmachen und mit " <SPACE>This ...") erhalte ich folgendes Ergebnis:

This is still a long  
This is pasted and 
not wrapped
line
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.