Ich weiß, dass es Möglichkeiten gibt, die Breite von Text in vim mithilfe von Vim 80-Spaltenlayout automatisch festzulegen set textwidth
(z. B. Bedenken hinsichtlich des Spaltenlayouts von Vim 80 ). Was ich suche, ist etwas Ähnliches wie =
(der Befehl zum Einrücken der Zeile), aber zum Umbrechen auf 80. Der Anwendungsfall ist manchmal, dass Sie Text mit Textbreite bearbeiten und nach dem Verbinden von Zeilen oder dem Löschen / Hinzufügen von Text schlecht umbrochen wird.
Im Idealfall würde dieser Befehl die von mir ausgewählten Zeilen vollständig neu organisieren und lange Zeilen abschneiden, während kurze hinzugefügt werden. Ein Beispiel:
long line is long!
short
Nach dem Ausführen des Befehls (unter der Annahme, dass der Wrap 13 Spalten betrug):
long line is
long! short
Wenn dies mit einem echten vim-Befehl nicht möglich ist, gibt es möglicherweise ein Befehlszeilenprogramm, mit dem ich die Eingabe weiterleiten kann.
Nach der Suche habe ich diese Referenz gefunden, die einige weitere Optionen bietet: http://www.cs.swarthmore.edu/help/vim/reformatting.html
par
. Es ist fantastisch!gq
- Gentleman's Quarterly . (Entschuldigung für die Anthropomorphisierung des Mannes, aber die Mnemonik funktioniert.)Antworten:
Stellen Sie
textwidth
80 (:set textwidth=80
) ein, gehen Sie zum Anfang der Datei (kann mit Ctrl- Homeoder ausgeführt werdengg
) und geben Sie eingqG
.gqG
Formatiert den Text von der aktuellen Position bis zum Ende der Datei. Es werden automatisch aufeinanderfolgende Zeilen verbunden, wenn dies möglich ist. Sie können eine Leerzeile zwischen zwei Zeilen einfügen, wenn Sie nicht möchten, dass diese beiden zusammengefügt werden.quelle
V}gq
. Auf diese Weise sehen Sie, was Sie formatieren möchten, bevor Sie es tatsächlich formatieren.q
von selbst?set tw=80
stattset textwidth=80
Zeit zu sparenset textwidth=76
Ihre Zeilen während der Eingabe automatisch umbrochen werden. Meine Beschwerde ist, dass es nichts mit vorhandenen Zeilen zu tun hat, die bearbeitet werden. AberV}gq
ist äußerst nützlich in dieser Hinsicht.V
Aktiviert den visuellen Auswahlmodus,}
wählt bis zum nächsten Absatzumbruch aus undgq
führt den aktuellen Formatierer darauf aus (oder verwendet ihngw
, um den vi-Formatierer explizit aufzurufen). Auch{
wird nach oben wählen. Sie können das gesamte Dokument auswählen und formatieren,ggVGgq
obwohl es möglicherweise einen einfacheren Weg gibt. Speichern Sie das als Makro@
, um es einfacher zu machen. Verwenden Sievipgq
diese Option, um den aktuellen Absatz zu erstellen.Michaels Lösung ist der Schlüssel, aber ich finde am häufigsten, dass ich den Rest des aktuellen Absatzes neu formatieren möchte; Verwenden Sie für dieses Verhalten
gq}
.quelle
Sie können
gq
mit jedem Bewegungsoperator verwenden. Wenn Sie beispielsweise nur bis zum Ende der aktuellen Zeile neu formatieren möchten (dh um die Zeile zu umbrechen, auf der sich Ihr Cursor befindet), können Sie verwendengq$
Sie können auch neu formatieren, indem Sie Text im visuellen Modus auswählen (mit `v und verschieben) und dann gq eingeben.
Es gibt auch andere Optionen, um das Umbrechen von Zeilen zu erzwingen.
Wenn Sie möchten, dass vim Ihre Zeilen umschließt, während Sie Text in sie einfügen, anstatt bis zum Ende warten zu müssen, um den Text neu zu strukturieren, finden Sie diese Optionen nützlich:
(Lassen Sie sich nicht von
wrap
und verfolgenlinebreak
, die nur den auf dem Bildschirm angezeigten Text neu formatieren, und ändern Sie den Text im Puffer nicht.)quelle
wrapmargin
Hilfe: Wenn 'Textbreite' nicht Null ist, wird diese Option nicht verwendet.Dank eines Kommentars von DonaldSmith fand ich dies, da die
textwidth
Option meine lange Textzeile nicht neu formatierte (ich konvertierte das Spielen mit Hex-zu-Byte-Konvertierungen)::%!fold -w 60
Dadurch wurde die gesamte Datei (die für mich eine Zeile war) in Zeilen mit einer Länge von 60 umformuliert.
quelle
Wenn Sie nach einem Nicht-Vim- Weg suchen , gibt es immer die UNIX-Befehle fmt und par .
Anmerkungen:
par
in seinem Webcast die Verwendung erwähnt .So würden wir beide für Ihr Beispiel verwenden.
So verwenden Sie Vim:
Sie können auch
:formatprg
par oder fmt einstellen und überschreibengq
. Weitere Informationen erhalten Sie:help formatprg
in Vim.quelle
Fast immer benutze ich
gq
im visuellen Modus. Ich sage meinen Schülern, es steht für "Gentlemens 'Quarterly", eine Zeitschrift für anspruchsvolle Leute.quelle