diff --git a/Vi.md b/Vi.md index a1e0d06..b3d1ef3 100644 --- a/Vi.md +++ b/Vi.md @@ -43,10 +43,12 @@ löscht Zeilen, die „error“ ODER „warning“ enthalten. ``` :%g/^$/d -``` +``` ## Löschen von Leerzeichen/Tabs am Zeileende jeder Zeile -`:%s/\s\+$//` +```` +:%s/\s\+$// +```` - `:%s` – Suchen & Ersetzen in der ganzen Datei - `\s\+` – ein oder mehrere Whitespace-Zeichen (Leerzeichen, Tabs) @@ -64,9 +66,13 @@ Hier geht es darum das ein Block aus einer Anzahl Zeilen besteht. Die erste Zeil getestete Variante: -`:%!sed -n '/Begriff1/,/Begriff2/p'` +``` +:%!sed -n '/Begriff1/,/Begriff2/p' +``` Direkt im Terminal: -`sed -n '/Begriff1/,/Begriff2/p' datei.txt > ausgabe.txt` +``` +sed -n '/Begriff1/,/Begriff2/p' datei.txt > ausgabe.txt +``` **Erklärung:** @@ -75,10 +81,12 @@ Direkt im Terminal: `/Begriff1/,/Begriff2/p` – gibt nur die Zeilen von Begriff1 **bis** Begriff2` aus (inklusive beider Zeilen) ## Löschen von Zeilenanfang bis zu einem bestimmten Begriff - ```:%s/^.*\zeBegriff//``` + ``` + :%s/^.*\zeBegriff// + ``` `^.*` → alles vom Zeilenanfang -`\ze → „hier endet der Match“ +`\ze` → „hier endet der Match“ SUCHTEXT bleibt erhalten ## Speichern als @@ -97,4 +105,55 @@ Erklärung: - `.` = aktuelle Zeile - `$-1` = vorletzte Zeile (die letzte hat ja nichts mehr zum Anhängen) -- `join` (oder kurz `j`) verbindet jede Zeile mit der folgenden \ No newline at end of file +- `join` (oder kurz `j`) verbindet jede Zeile mit der folgenden + +Beispiel: + +Vorher: + +``` +eins +zwei +drei +vier +``` + +Nach `:1,$-1join`: + +``` +eins zwei drei vier +``` + +Falls man **jeweils nur zwei Zeilen paarweise** verbinden will (also 1+2, 3+4, 5+6 …), dann ist `join` allein nicht genug, weil es alles zu einer einzigen Zeile macht. + +Daher: + +``` +:%norm Jj +``` + +Das macht für jede Zeile: + +- `J` → nächste Zeile anhängen +- `j` → zur nächsten unbearbeiteten Zeile springen + +Beispiel: + +Vorher: + +``` +a +b +c +d +e +f +``` + +Nachher: + +``` +a b +c d +e f +```