Ich schreibe derzeit viel einfachen Text (und LaTeX mit minimaler Formatierung in Absätzen), und es wäre schön, wenn ich vim so einrichten könnte, dass jeder Satz beibehalten wird (der Einfachheit halber wird der Text durch ein '.', '!' , oder '?', das ist eine abschließende Interpunktion, gefolgt von einem Leerzeichen (um das Aufbrechen von Dezimalzahlen zu vermeiden) in einer eigenen Zeile, sodass die VCS-Diffs nützlicher sind.
Zumindest möchte ich gq
Text formatieren aus:
He lay flat on the brown, pine-needled floor of the forest, his chin on his
folded arms, and high overhead the wind blew in the tops of the pine trees.
The mountainside sloped gently where he lay; but below it was steep and he
could see the dark of the oiled road winding through the pass. There was a
stream alongside the road and far down the pass he saw a mill beside the
stream and the falling water of the dam, white in the summer sunlight.
Zu:
He lay flat on the brown, pine-needled floor of the forest, his chin on his folded arms, and high overhead the wind blew in the tops of the pine trees.
The mountainside sloped gently where he lay; but below it was steep and he could see the dark of the oiled road winding through the pass.
There was a stream alongside the road and far down the pass he saw a mill beside the stream and the falling water of the dam, white in the summer sunlight.
Aber es wäre schön, wenn vim diese Formatierung auch während der Eingabe durchführen würde (wie es bei textwidth reflow der Fall ist). Ist das möglich?
Meine aktuelle Lösung ist, einen Absatz mit zu verbinden J
und dann auszuführen, :'<,'>s/\. /.\r/g
was ziemlich gut ist, da es nur wenige Ausrufezeichen und Fragezeichen gibt, aber es wäre viel besser, wenn ich gq etwas schlauer machen könnte.
quelle
)
und eine neue Zeile einfügen. Wiederholen, bis Sie das Ende des Bereichs erreicht haben." Dann würde es vermutlich irgendwelche Einrückungsregeln anwenden. Dafür ist mein Vim-Fu zu schwach. :)e.g. blah
, undBlah et al. 2018
das ist etwas nervig. Sie können solche Muster mit so etwas aufheben's/\(e\.g\|\<al\)\@<![.!?]\zs /\r/g'
. Fügen Sie der ersten Gruppe einfach weitere Muster hinzu, um andere Dinge zu vermeiden, die Sie nicht aufteilen möchten. Ansonsten ist das super nützlich, danke. Ich war noch nie zuvor darauf gestoßengq
undgqip
eignet sich hervorragend zum Formatieren von Text, den die Texteditoren des Mitautors entstellt haben.Nun, Sie können einige Karten und Autobefehle einrichten:
Stellen Sie dann einfach den Dateityp auf customtxt ein oder rufen Sie die
AddSentenceMaps
Funktion manuell auf.quelle
Ich möchte meine Gedanken zu diesem Thema hinzufügen. Normalerweise möchten Leute diese Art von Funktion, weil sie über umbrochene Zeilen springen, wenn sie mit
j
undk
Kommandos durch den Code navigieren, was das Standardverhalten von Vim ist. Für die Navigation durch umbrochene Zeilen verwende ichgj
- nach unten undgk
- nach oben. Es gibt auch die Möglichkeit, Standardj
undk
Befehl auf den Gegenstücken mit dem Präfix g neu zuzuordnen , aber meiner Meinung nach wäre es übertrieben.quelle
j
undk
nachgj
undgk
wann immer Sie wollen zu tun ;-)Es beantwortet nicht Ihre spezifische Frage zur Neuformatierung, aber 'Zeilenumbruch setzen' zusammen mit 'Zeilenumbruch setzen' kann das Bearbeiten langer Zeilen wesentlich angenehmer machen. Kombinieren Sie dies mit gj und gk, um in umbrochenen Zeilen zu navigieren. Ich ordne die Aufwärts- und Abwärtspfeile gj bzw. gk zu, so dass ich die Wahl habe, ob ich echte Linien oder visuelle Linien nach oben und unten bewegen möchte. Wie weise für Home / End zu g0 / g $.
quelle