9 Stimmen

Wie man "gq "ed-Text in eine Zeile pro Absatz in Vim umformatiert

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?

14voto

DrAl Punkte 67029

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.

2voto

Curt Nelson Punkte 3042

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

0voto

ZyX Punkte 50799

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.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X