Zeilen in VIM mit nur Leerzeichen entfernen

504
AJ.

Gibt es eine vim idiom für das Entfernen aller Zeilen aus einer Datei, die nur Leerzeichen enthalten (einschließlich Zeilenumbrüche)?

2

1 Antwort auf die Frage

2
Ignacio Vazquez-Abrams

Der dBefehl nimmt einen Bereich an, und der Bereich kann ein regulärer Ausdruck sein.

:g/^\s*$/d 
Normalerweise verwende ich so etwas wie `:% s / search / replace / g ', um globale Suchen und Ersetzen durchzuführen. ist ": g" äquivalent zu ":% s" mit g-Option? AJ. vor 12 Jahren 0
`:` versetzt vim in den Befehlsmodus. `g` ist ein Modifikator für den Bereich. "%" ist der Bereich, der "alle Zeilen" bedeutet. `s` ist der Ersatzbefehl. `d` ist der Löschbefehl, für den keine Optionen erforderlich sind. Ignacio Vazquez-Abrams vor 12 Jahren 0
@Ignacio: Beim ersten Lesen habe ich gesehen, dass "d" keine Geiseln nimmt ... Benjamin Bannier vor 12 Jahren 0
@honk: Leider tut es das. Zum Glück sind sie nur ein "P" entfernt. Ignacio Vazquez-Abrams vor 12 Jahren 0
ah, ersatz vs löschen, verstehen. Vielen Dank! AJ. vor 12 Jahren 0
`: g [lobal]` wendet einen ex-Befehl auf die Zeilen an, die einem gegebenen Muster entsprechen. In der gegebenen Lösung sucht `: global` nach Zeilen mit 0 oder mehr Leerzeichen (` / ^ \ s * $ / `) und wendet den Befehl`: d [elete] `auf sie an. Weitere Informationen und Alternativen finden Sie unter `: h: global`. Raimondi vor 12 Jahren 2
Die: v-Version von: g ist auch sehr nützlich, da der Befehl auf die Zeilen angewendet wird, die nicht mit dem Muster übereinstimmen. Das Gleiche kann zum Beispiel mit folgendem erreicht werden:: v / \ S / d Neg_EV vor 12 Jahren 0