785 Stimmen

Vim leere Zeilen löschen

Welchen Befehl kann ich ausführen, um leere Zeilen in Vim zu entfernen?

5voto

Pokey Punkte 41

Ich habe einige der Antworten auf dieser Seite ausprobiert, aber viele von ihnen haben bei mir nicht funktioniert. Vielleicht, weil ich Vim unter Windows 7 benutze (spottet nicht, habt einfach Mitleid mit mir :p)?

Hier ist die einfachste Lösung, die ich gefunden habe und die mit Vim unter Windows 7 funktioniert:

:v/\S/d

Hier ist eine längere Antwort in der Vim Wikia: http://vim.wikia.com/wiki/Remove_unwanted_empty_lines

4voto

cn8341 Punkte 129
:g/^\s*$/d
^ begin of a line
\s* at least 0 spaces and as many as possible (greedy)
$ end of a line

einfügen

:command -range=% DBL :<line1>,<line2>g/^\s*$/d

in Ihrer .vimrc, dann starten Sie Ihren Vim neu. Wenn Sie den Befehl :5,12DBL verwenden, werden alle Leerzeilen zwischen der 5. und 12. Zeile gelöscht. Ich denke, meine Antwort ist die beste Antwort!

0 Stimmen

Wenn Sie Antworten posten, fügen Sie bitte eine Erklärung hinzu, die beschreibt, was Sie geändert oder hinzugefügt haben oder wie es funktioniert oder ähnliches. Auch wenn Ihre Antwort die Lösung sein mag, ist es wahrscheinlich, dass einige Leute, die dies lesen, nicht verstehen, was es bedeutet oder wie es funktioniert. Und bitte machen Sie es auf Englisch.

0 Stimmen

Das spielt hier keine Rolle. Diese Frage wurde vor 5 Jahren beantwortet

0 Stimmen

Ich denke, dass soulmerge's Antwort :g/^$/d nicht die beste Antwort ist und ich bearbeite sie, um seine Antwort mit :g/^ zu verbessern. \s *$/d. aber warum kann ich meine Bearbeitung nicht in "Alle Bearbeitungen dieser Pose anzeigen" sehen?

2voto

MisterW Punkte 41

Wenn in Ihrem Text ein doppelter Zeilenabstand vorhanden ist, entfernt dieser Befehl den doppelten Abstand und fügt bereits vorhandene, sich wiederholende Leerzeilen zu einer einzigen Leerzeile zusammen. Am Anfang einer Zeile wird ein temporäres Trennzeichen ^^^ verwendet. Wenn dies mit Ihrem Inhalt kollidiert, wählen Sie etwas anderes. Zeilen, die nur Leerzeichen enthalten, werden als Leerzeilen behandelt.

%s/^\s*\n\n\+/^^^\r/g | g/^\s*$/d | %s/^^^^.*

1voto

user1481441 Punkte 11

Das hat bei mir funktioniert:

:%s/^[^a-zA-Z0-9]$\n//ig

Grundsätzlich werden alle Zeilen gelöscht, die keine Zahl oder keinen Buchstaben enthalten. Da alle Einträge in meiner Liste Buchstaben enthielten, wurden alle leeren Zeilen gelöscht.

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