Warum kann ich vim nicht davon abhalten, meinen Code zu verpacken?


115

Ich kann vim nicht davon abhalten, meinen Python-Code zu verpacken. Wenn ich :set nowrapwie ein Champion eintrete , aber es wickelt sich immer noch.

Ich kann drücken J, um die geteilten Codezeilen zu vereinen, so dass es so aussieht, als würde ein echter Wagenrücklauf eingefügt. Ich verstehe einfach nicht, warum oder wie ich es aufhalten soll.


15
:set nowrapverhindert nur, dass die Anzeige von Zeilen umbrochen wird, nicht, dass Zeilenumbrüche eingefügt werden.
Rampion

Antworten:


115
'textwidth' 'tw'        number  (default 0)
                        local to buffer
                        {not in Vi}
        Maximum width of text that is being inserted.  A longer line will be
        broken after white space to get this width.  A zero value disables
        this.  'textwidth' is set to 0 when the 'paste' option is set.  When
        'textwidth' is zero, 'wrapmargin' may be used.  See also
        'formatoptions' and |ins-textwidth|.
        When 'formatexpr' is set it will be used to break the line.
        NOTE: This option is set to 0 when 'compatible' is set.


'wrapmargin' 'wm'       number  (default 0) 
                        local to buffer
        Number of characters from the right window border where wrapping
        starts.  When typing text beyond this limit, an <EOL> will be inserted
        and inserting continues on the next line.
        Options that add a margin, such as 'number' and 'foldcolumn', cause
        the text width to be further reduced.  This is Vi compatible.
        When 'textwidth' is non-zero, this option is not used. 
        See also 'formatoptions' and |ins-textwidth|.  {Vi: works differently
        and less usefully}

Wenn Sie sich auf das automatische Umschließen langer Zeilen beziehen, die an die nächste gesendet werden, versuchen Sie es

:set textwidth=0 
:set wrapmargin=0

12
Einige Plugins scheinen diese Einstellung zu überschreiben.
Yzmir Ramirez

Die twund wpOptionen haben für mich nicht wirklich geklappt, also musste ich mich für formatoptions github.com/ain/.vim/blob/…
Ain Tohvri

2
Wenn tw und wp immer noch nicht das Problem lösen , haben einen Blick auf diesen Beitrag auf SU , die mir geholfen , mein Problem lösen: superuser.com/questions/250112/...
Alien_SM

3
Das Entfernen filetype plugin onvon meinem .vimrchat es für mich getan.

1
Mit dieser Antwort können Sie gqden Absatz nicht manuell an der Textbreite neu ausrichten. @ Engineero sollte der richtige sein.
Dylanthepiguy

86

Keine der anderen Antworten hat bei mir funktioniert (IDK warum).

:set wrap! Habe den Trick für mich gemacht (mit GVim für Windows).


8
Dies löst ein etwas anderes Problem. wrapbietet das Aussehen des Zeilenumbruchs, aber nicht tatsächlich Text auf neue Linien brechen. Sie hatten wahrscheinlich wrapaktiviert, also haben :set wrap!Sie es ausgeschaltet. Sie können überprüfen, mit :set wrap?welchem ​​der aktuelle Wert (dh wrapoder nowrap) wiedergegeben wird.
Shadowtalker

1
Diese Lösung funktioniert bei Mac OsX. Vim Version 7.4
Shnkc

Das hat bei mir funktioniert, ich habe mich geändert textwidthund wrapmarginzuerst, aber das hat vim tatsächlich gezwungen, ohne umbrochene Zeilen zu aktualisieren und neu zu rendern.
Kredns

Ding din ding! Arbeitet in Neovim
Gjaa

Was für ein magischer Moment, wenn Sie herausfinden, dass der Befehl, den Sie wirklich brauchen, so ausdrucksstark und einfach ist. Danke Entwickler
Capitan Empanada

57

set formatoptions-=t sollte den Trick machen. set formatoptions+=tschaltet die automatische Umhüllung wieder ein.

Weitere Informationen dazu, was Sie tun können formatoptions , finden Sie in den Dokumenten .


2
Danke dir! Ihre Lösung ist die einzige, die für mich funktioniert hat. Vim fügt manchmal keine Zeilenumbrüche mehr ein, wenn ich in den Einfügemodus gehe.
Geremia

2
Jep. Dies ist die wirkliche Lösung.
Russ Bateman

16

Um zu verhindern, dass vim lange Zeilen umschließt, verwende ich diese beiden Zeilen in meinem .vimrc:

set nowrap           " do not automatically wrap on load
set formatoptions-=t " do not automatically wrap text when typing

12

Um den Zeilenumbruch zu deaktivieren, können Sie :set wrap!diesen Befehl eingeben oder an Ihren anhängen ~/.vimrc.


2
Dies hat keinen Einfluss auf das automatische Einfügen von echten Zeilenumbrüchen, um die es in dieser Frage geht.
Arthur Tacca

9

Vielleicht ist es die eingestellte Textbreite, die bei Erreichen einer bestimmten Länge automatisch Zeilen bricht

:set tw=0

Wenn das fehlschlägt, spielen Sie mit z

:set wrap linebreak textwidth=0 

und

:set virtualedit=insert

2
Wrap und Zeilenumbruch fügen kein tatsächliches Zeilenende in den Puffer ein, sodass dies nicht sein Problem zu sein scheint.
A. Levy


0

Öffnen Sie vimrc_example.vim (Ja, dies ist die Datei in Vim74) und setzen Sie textwidth = 0.


0

Auf MacBook Pro habe ich in .vimrc die Zeile übertroffen

autocmd FileType text setlocal textwidth=78

so wurde es

"  autocmd FileType text setlocal textwidth=78

.

(Ich habe eine Version von vim über Homebrew installiert.) Dies half für alle TXT-Dateien.

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.