Vi Formatierung, Thema Zeilenumbruchlöschung noch erweitern
This commit is contained in:
@@ -2,60 +2,99 @@
|
|||||||
|
|
||||||
## alle Zeilen löschen mit Bedingung löschen
|
## alle Zeilen löschen mit Bedingung löschen
|
||||||
### Variante 1
|
### Variante 1
|
||||||
`:g/foo/d`
|
```
|
||||||
|
:g/foo/d
|
||||||
|
```
|
||||||
|
|
||||||
`:g/pattern/d` → löscht alle Zeilen, auf die das Muster passt.
|
`:g/pattern/d` → löscht alle Zeilen, auf die das Muster passt.
|
||||||
|
|
||||||
### Variante 2 Substitution
|
### Variante 2 Substitution
|
||||||
|
|
||||||
Mit Suchen & Ersetzen (Substitute) die ganze Zeile löschen
|
Mit Suchen & Ersetzen (Substitute) die ganze Zeile löschen
|
||||||
`:%s/.*foo.*//g`
|
```
|
||||||
|
:%s/.*foo.*//g
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
### Variante 3 Zeilenanfang
|
### Variante 3 Zeilenanfang
|
||||||
`:g/^bar/d`
|
|
||||||
|
```
|
||||||
|
:g/^bar/d`
|
||||||
|
```
|
||||||
|
|
||||||
löscht Zeilen, die mit „bar“ beginnen
|
löscht Zeilen, die mit „bar“ beginnen
|
||||||
|
|
||||||
### Variante 4 Negation
|
### Variante 4 Negation
|
||||||
`:v/baz/d`
|
|
||||||
|
```
|
||||||
|
:v/baz/d
|
||||||
|
```
|
||||||
|
|
||||||
löscht alle Zeilen, die NICHT „baz“ enthalten
|
löscht alle Zeilen, die NICHT „baz“ enthalten
|
||||||
### Variante 5 Kombination
|
### Variante 5 Kombination
|
||||||
`:g/\(error\|warning\)/d`
|
|
||||||
|
```
|
||||||
|
:g/\(error\|warning\)/d
|
||||||
|
```
|
||||||
|
|
||||||
löscht Zeilen, die „error“ ODER „warning“ enthalten.
|
löscht Zeilen, die „error“ ODER „warning“ enthalten.
|
||||||
|
|
||||||
## Löschen von Leerzeichen am Zeilenanfang
|
## Löschen von Leerzeichen am Zeilenanfang
|
||||||
|
|
||||||
|
```
|
||||||
:%g/^$/d
|
:%g/^$/d
|
||||||
|
```
|
||||||
|
|
||||||
## Löschen von Leerzeichen/Tabs am Zeileende jeder Zeile
|
## Löschen von Leerzeichen/Tabs am Zeileende jeder Zeile
|
||||||
`:%s/\s\+$//`
|
`:%s/\s\+$//`
|
||||||
|
|
||||||
- :%s – Suchen & Ersetzen in der ganzen Datei
|
- `:%s` – Suchen & Ersetzen in der ganzen Datei
|
||||||
- \s\+ – ein oder mehrere Whitespace-Zeichen (Leerzeichen, Tabs)
|
- `\s\+` – ein oder mehrere Whitespace-Zeichen (Leerzeichen, Tabs)
|
||||||
- $ – am Zeilenende
|
- `$` – am Zeilenende
|
||||||
- // – ersetzen durch nichts (also löschen)
|
- `//` – ersetzen durch nichts (also löschen)
|
||||||
|
|
||||||
### Varianten
|
### Varianten
|
||||||
- :%s/ \+$//Nur Leerzeichen (keine Tabs) am Ende entfernen
|
- `:%s/ \+$//` Nur Leerzeichen (keine Tabs) am Ende entfernen
|
||||||
- :%s/\t\+$//Nur Tabs am Ende entfernen
|
|
||||||
-:s/\s\+$//Nur in der aktuellen Zeile
|
- `:%s/\t\+$//`Nur Tabs am Ende entfernen
|
||||||
|
- `:s/\s\+$//` Nur in der aktuellen Zeile
|
||||||
|
|
||||||
## Arbeiten mit Blöcken
|
## Arbeiten mit Blöcken
|
||||||
Hier geht es darum das ein Block aus einer Anzahl Zeilen besteht. Die erste Zeile beinhaltet den ersten Begriff (Begriff1) zur Identifizierung des Blockes und eines zweiten Begiffes (Begriff2) der das Ende kennzeichnet, alles um diese Blöcke soll entfernt werden.
|
Hier geht es darum das ein Block aus einer Anzahl Zeilen besteht. Die erste Zeile beinhaltet den ersten Begriff (Begriff1) zur Identifizierung des Blockes und eines zweiten Begiffes (Begriff2) der das Ende kennzeichnet, alles um diese Blöcke soll entfernt werden.
|
||||||
|
|
||||||
getestete Variante:
|
getestete Variante:
|
||||||
|
|
||||||
:%!sed -n '/Begriff1/,/Begriff2/p'
|
`:%!sed -n '/Begriff1/,/Begriff2/p'`
|
||||||
Direkt im Terminal:
|
Direkt im Terminal:
|
||||||
sed -n '/Begriff1/,/Begriff2/p' datei.txt > ausgabe.txt
|
`sed -n '/Begriff1/,/Begriff2/p' datei.txt > ausgabe.txt`
|
||||||
|
|
||||||
Erklärung:
|
**Erklärung:**
|
||||||
|
|
||||||
:%! – schickt den gesamten Pufferinhalt durch ein externes Kommando
|
`:%!` – schickt den gesamten Pufferinhalt durch ein externes Kommando
|
||||||
sed -n – unterdrückt die normale Ausgabe
|
`sed -n` – unterdrückt die normale Ausgabe
|
||||||
/Begriff1/,/Begriff2/p – gibt nur die Zeilen von Begriff1 **bis** Begriff2` aus (inklusive beider Zeilen)
|
`/Begriff1/,/Begriff2/p` – gibt nur die Zeilen von Begriff1 **bis** Begriff2` aus (inklusive beider Zeilen)
|
||||||
|
|
||||||
## Löschen von Zeilenanfang bis zu einem bestimmten Begriff
|
## Löschen von Zeilenanfang bis zu einem bestimmten Begriff
|
||||||
:%s/^.*\zeBegriff//
|
```:%s/^.*\zeBegriff//```
|
||||||
|
|
||||||
^.* → alles vom Zeilenanfang
|
`^.*` → alles vom Zeilenanfang
|
||||||
\ze → „hier endet der Match“
|
`\ze → „hier endet der Match“
|
||||||
SUCHTEXT bleibt erhalten
|
SUCHTEXT bleibt erhalten
|
||||||
|
|
||||||
## Speichern als
|
## Speichern als
|
||||||
|
|
||||||
:w <neuer Name>
|
`:w <neuer Name>`
|
||||||
|
|
||||||
|
## Zeilen zusammenfügen
|
||||||
|
|
||||||
|
### Von einer Zeile bis zum Dateiende alle Zeilen zusammenfügen
|
||||||
|
|
||||||
|
```bash
|
||||||
|
:.,$-1join
|
||||||
|
```
|
||||||
|
|
||||||
|
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
|
||||||
Reference in New Issue
Block a user