Ich habe einige Textdateien, die zuvor in vim mit "gggqG" formatiert wurden. Jetzt muss ich sie in das Format "eine Zeile pro Absatz" umwandeln. Ich habe eine Möglichkeit gesehen (mit dem Befehl :g), dies zu tun, aber ich habe sie vergessen. Weiß das jemand?
Antworten
Zu viele Anzeigen?Mir sind zwei Ansätze bekannt:
-
Setzen Sie textwidth auf einen großen Wert und formatieren Sie neu:
:set tw=1000000 gggqG
-
Verwenden Sie Substitute (dies ist besser geeignet, wenn Sie es in einem Mapping tun wollen):
:%s/.\zs\n\ze./ /
Erläuterung zu Letzterem:
:%s " Search and replace across the whole file
/ " Delimiter
.\zs\n\ze. " Look for a character either side of a new-line (so ignore blank lines).
" The \zs and \ze make the replacement only replace the new-line character.
/ / " Delimiters and replace the new-line with a space.
Wenn Ihre Textabsätze durch eine Leerzeile getrennt sind, scheint dies zu funktionieren:
:g!/^\s*$/normal vipJ
:g
global (mehrfache Wiederholung)
!/^\s*$/
passt auf alle Zeilen außer Leerzeilen und Zeilen, die nur Leerzeichen enthalten.
normal
geht in den 'normalen' Modus über
vip
inneren Absatz visuell auswählen
J
Linien verbinden
Vielleicht sollten Sie textwidth auf einen sehr großen Wert (wie 99999999) setzen (0 funktioniert aus irgendeinem Grund nicht) und verwenden gggqG
?
// Ich kann Ihnen nicht sagen, wie Sie Ihren Absatz neu formatieren können. :g
ohne genau zu wissen, was der Absatz ist. Vielleicht kann das jemand anders.