Der einzige Grund, warum ich jemals eine Textdatei in Pico oder Nano und nicht in Vim bearbeitet habe, war der Befehl "Justify" ^J. Es würde einen Textabschnitt neu formatieren und Zeilenumbrüche an Wortumbrüchen erzeugen, so dass der Text auf dem Bildschirm mit fester Breite gut schwebt. Formatieren Sie den Text so, dass er in vordefinierte 80 Spalten passt und nur Zeilenumbrüche zwischen Wörtern erzeugt. Da die Funktion eingeschränkt war, war es sehr nützlich, lange Kommentarblöcke oder Dokumentationsdateien zu formatieren oder einfach eine endlose Reihe von Parametern durch etwas besser lesbares zu ersetzen.
Kann ich so etwas in Vim machen?
'formatprg'
Option aktivieren .Zu diesem Thema gibt es einen großartigen VimCast.
http://vimcasts.org/episodes/formatting-text-with-par/
Grundsätzlich müssen Sie Folgendes installieren
par
:Und dann, da Sie möchten, dass Spalten in 80 Spalten eingeschlossen werden:
Jetzt können Sie den
gq
Operator verwenden, wie in anderen Antworten (z. B.gqip
), und er verwendet Par anstelle von Vims integriertem Formatierer.Par ist ziemlich fortgeschritten und formatiert Kommentare wie diese:
quelle
Von
:help usr_25
:Alles was Sie tun müssen, ist zu rennen
und dann eingeben
um den Text in der gesamten Datei auszurichten.
(Natürlich können Sie auch
ru macros/justify.vim
Ihre .vimrc-Datei hinzufügen , damit Sie sie nicht jedes Mal eingeben müssen.)Hinweis : Dadurch werden keine Zeilenumbrüche hinzugefügt. Sie müssen diese manuell mit hinzufügen
gq
. Dazu müssen Sie auch dentextwidth
Wert (Standard ist 0) über auf Ihren gewünschten Wert einstellenund - wenn Sie möchten - automatisches Umbrechen von Text durch Setzen des
t
Flags überWenn Sie möchten, können Sie in Ihrer .vimrc-Datei eine Zuordnung festlegen, die das Ganze für Sie erledigt:
Dies bewegt sich an den Anfang der Datei (
gg
), umschließt alle Zeilen (gq
bisG
) und_j
justiert dann den Text.quelle
:set fo+=a
Option für die automatische Neuformatierung des gesamten Absatzes gefunden. Schauen Sie sich:help fo-table
andere Optionen an. Es gibt auch ein schönes Video - Tutorial hier ._j
vom Makro hinzugefügte Zuordnung scheint für mich die gesamte Datei zu rechtfertigen, oder sie kann durch eine linienweise visuelle Auswahl eingeschränkt werden.Während die Hilfe von nano den
^J
Befehl "Justify" aufruft, rechtfertigt sie den Text nicht, sondern formatiert den Text neu, indem die Zeilen vor dem rechten Rand des Bildschirms gebrochen werden (oder an einer konfigurierbaren Spalte, denke ich).Sie können die gleiche Sache in VIM tun , indem Sie die Variable Einstellung
textwidth
von:help 'textwidth'
:Das heißt: Wenn eine Zeile länger als
textwidth
Zeichen ist, umschließt VIM während der Eingabe die Zeile mit dem ersten Leerzeichen, damit die Zeilenlänge kleiner oder gleich bleibttextwidth
.Damit dies funktioniert,
formatoptions
muss die Option den Buchstaben enthaltent
. Siehe:help 'formatoptions'
und:help fo-table
für die verfügbaren Optionen, zum Beispiel könnten Sie an derc
Option interessiert sein , dass die Formatierung mit Kommentaren funktioniert.Bearbeiten : Sie können die gleiche Operation durchführen, ohne die Notwendigkeit zu setzen
t
informatoptions
, mit dem Befehlgw{motion}
, es formatiert den Text zwischen der aktuellen Cursorposition und der Position des Cursors nach{motion}
. Dergw
Befehl ist auch im visuellen Modus verfügbar und formatiert den ausgewählten Text.quelle
Hier sind zwei einfache Optionen:
!fmt
!}fmt
Beide senden einen Textblock an Unix
fmt
, sieheman fmt
Optionen. Sie können Optionsargumente von vim übergeben. Um beispielsweise einen Block mit einer Breite von 50 Zeichen zu formatieren, geben Sie Folgendes ein!}fmt -w 50
.quelle
:%!fmt
eine einzelne Datei eingeben und rückgängig machen,u
wenn Ihnen das Ergebnis nicht gefällt.Markieren Sie den Text mit dem visuellen Befehl und verwenden Sie dann:
wobei 40 die Spaltenbreite ist und
j
Mittelwerte rechtfertigen.quelle
par
) und der Funktionsweise Ihrer Lösung mangelt . Möglicherweise möchten Sie weitere Details hinzufügen, um die Qualität Ihrer Antwort zu verbessern und sie für zukünftige Leser nützlicher zu machen.