Merge remote-tracking branch 'refs/remotes/origin/master'
This commit is contained in:
@@ -0,0 +1,175 @@
|
||||
j## 1. Die Basis: Modi & Navigation
|
||||
Vim basiert auf dem Konzept von Modi. Um Befehle auszuführen, musst du fast immer im **Normal Mode** sein.
|
||||
|
||||
### Modi-Wechsel
|
||||
* `i` / `a`: Insert-Modus (vor/nach Cursor).
|
||||
* `I` / `A`: Insert am Zeilenanfang / Zeilenende.
|
||||
* `o` / `O`: Neue Zeile unterhalb / oberhalb einfügen.
|
||||
* `Esc`: Zurück in den Normal-Modus.
|
||||
* `v` / `V` / `Ctrl+v`: Visueller Modus (Zeichen / Zeile / Block).
|
||||
|
||||
### Navigation (Normal Mode)
|
||||
* **Grundbewegung:** `h` (links), `j` (runter), `k` (hoch), `l` (rechts).
|
||||
* **Wortweise:** `w` (nächstes Wort), `b` (vorheriges), `e` (Wortende).
|
||||
* **Zeilenweise:** `0` (Anfang), `^` (erstes Zeichen), `$` (Ende).
|
||||
* **Datei-Sprünge:** `gg` (Anfang), `G` (Ende), `:n` (Zeile n).
|
||||
* **Scrollen:** `Ctrl+u` / `Ctrl+d` (Halbe Seite hoch/runter).
|
||||
* **Klammern:** `%` springt zur korrespondierenden Klammer `()`, `[]`, `{}`.
|
||||
|
||||
---
|
||||
|
||||
## 2. Bearbeitung & Text-Objekte
|
||||
Die wahre Stärke von Vim liegt in der Kombination von **Operatoren** und **Bewegungen/Objekten**.
|
||||
|
||||
### Basis-Operationen
|
||||
* `x`: Zeichen löschen.
|
||||
* `dd`: Ganze Zeile löschen (Ausschneiden).
|
||||
* `yy`: Zeile kopieren (Yank).
|
||||
* `p` / `P`: Einfügen nach / vor dem Cursor.
|
||||
* `u` / `Ctrl+r`: Undo / Redo.
|
||||
* `.`: Die letzte Aktion wiederholen.
|
||||
|
||||
### Das "Verb + Adjektiv + Nomen" Prinzip
|
||||
Viele Befehle folgen dem Muster: `[Zahl] + [Operator] + [Textobjekt/Bewegung]`.
|
||||
* `3dw`: Lösche 3 Wörter.
|
||||
* `ci"`: **C**hange **I**nside **"**: Löscht den Inhalt zwischen Anführungszeichen und geht in den Insert-Modus.
|
||||
* `da(`: **D**elete **A**round **(**: Löscht die Klammern inklusive Inhalt.
|
||||
* `yiw`: Kopiere das aktuelle Wort (**Y**ank **I**nside **W**ord).
|
||||
|
||||
---
|
||||
|
||||
## 3. Suche & Ersetzen (Regex & "Magic")
|
||||
|
||||
### Suchen in der aktuellen Datei
|
||||
* `/muster`: Vorwärts suchen.
|
||||
* `?muster`: Rückwärts suchen.
|
||||
* `n` / `N`: Nächster / Vorheriger Treffer.
|
||||
* `*` / `#`: Sucht das Wort unter dem Cursor vorwärts / rückwärts.
|
||||
|
||||
### Ersetzen (Substituieren)
|
||||
* `:%s/alt/neu/g`: Ersetzt alle Vorkommen in der Datei.
|
||||
* `:%s/alt/neu/gc`: Ersetzt mit Bestätigung für jeden Treffer.
|
||||
|
||||
### RegEx & Very Magic
|
||||
Vim nutzt standardmäßig eine eigene RegEx-Syntax. Mit `\v` (very magic) nutzt du eine Syntax, die moderneren Sprachen (wie Python/JS) ähnelt.
|
||||
```vim
|
||||
" Findet abc oder ac (das ? ist in very magic ein Metazeichen)
|
||||
/\vab?c
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 4. Projektweites Find & Replace (Neovim & Telescope)
|
||||
Dies ist ein Workflow für umfassendes Refactoring über viele Dateien hinweg.
|
||||
|
||||
### Schritt 1: Suchen & Filtern
|
||||
1. Starte Telescope: `:Telescope live_grep`.
|
||||
2. Suche nach dem Begriff.
|
||||
3. Sende Ergebnisse an die Quickfix-Liste: `Ctrl + q`.
|
||||
|
||||
### Schritt 2: Massen-Ersetzung mit `:cdo`
|
||||
Der Befehl `:cdo` führt ein Kommando für jeden Eintrag in der Quickfix-Liste aus.
|
||||
```vim
|
||||
:cdo s/alter_begriff/neuer_begriff/gc | update
|
||||
```
|
||||
* `gc`: Global in der Zeile ersetzen, mit Bestätigung.
|
||||
* `| update`: Speichert die Datei sofort, wenn eine Änderung vorgenommen wurde.
|
||||
|
||||
### Schritt 3: Zeilen löschen (Spezialfall)
|
||||
Wenn du Zeilen, die ein Muster enthalten, komplett löschen willst, ist `:cfdo` (pro Datei) robuster als `:cdo` (pro Treffer).
|
||||
```vim
|
||||
:cfdo g/muster/d | update
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 5. Multi-File Suche mit `:vimgrep`
|
||||
Wenn du kein Telescope nutzt, ist `:vimgrep` der integrierte Weg.
|
||||
* `:vimgrep /muster/ **/*.py`: Sucht rekursiv in allen Python-Dateien.
|
||||
* `:copen`: Öffnet das Quickfix-Fenster, um die Ergebnisse zu sehen.
|
||||
* `:cn` / `:cp`: Springe zum nächsten/vorherigen Treffer.
|
||||
|
||||
---
|
||||
|
||||
## 6. Register & Clipboard
|
||||
Vim hat mehrere "Ablagen" (Register).
|
||||
* `"ayw`: Kopiere Wort in Register `a`.
|
||||
* `"ap`: Füge Inhalt aus Register `a` ein.
|
||||
* `"+y`: Kopiere in das **System-Clipboard** (Wichtig für Austausch mit anderen Apps!).
|
||||
* `:reg`: Zeige alle aktuellen Registerinhalte an.
|
||||
* `"%`: Enthält den Pfad der aktuellen Datei.
|
||||
|
||||
---
|
||||
|
||||
## 7. Effizienz-Booster: Makros & Markierungen
|
||||
|
||||
### Makros (Automatisierung)
|
||||
* `qa`: Aufnahme in Register `a` starten.
|
||||
* `q`: Aufnahme stoppen.
|
||||
* `@a`: Makro `a` abspielen.
|
||||
* `@@`: Das letzte Makro wiederholen.
|
||||
|
||||
### Markierungen (Ergänzung)
|
||||
Mit Markierungen kannst du schnell zu bestimmten Stellen springen.
|
||||
* `ma`: Setzt eine Markierung `a` an der aktuellen Position.
|
||||
* `'a`: Springt direkt zur Markierung `a`.
|
||||
|
||||
---
|
||||
|
||||
## 8. Fenster, Tabs & Buffer
|
||||
Vim verwaltet Dateien in **Buffern**. **Windows** (Splits) und **Tabs** sind nur Ansichten darauf.
|
||||
|
||||
* `:ls`: Alle offenen Buffer anzeigen.
|
||||
* `:b 3`: Zum 3. Buffer wechseln.
|
||||
* `:split` / `:vsplit`: Horizontaler / Vertikaler Split.
|
||||
* `Ctrl+w w`: Zwischen Fenstern wechseln.
|
||||
* `:tabnew`: Neuer Tab.
|
||||
* `gt` / `gT`: Nächster / Vorheriger Tab.
|
||||
|
||||
---
|
||||
|
||||
## 9. Visual Block Mode & Kommentieren
|
||||
Der Block-Modus (`Ctrl+v`) ist ideal, um Textspalten zu bearbeiten.
|
||||
|
||||
### Block-Kommentieren (Manuell)
|
||||
1. `Ctrl+v` drücken und Zeilen nach unten markieren.
|
||||
2. `Shift+i` (Insert am Anfang des Blocks).
|
||||
3. Kommentarzeichen eingeben (z. B. `# `).
|
||||
4. `Esc` drücken – die Änderung wird auf alle Zeilen angewendet.
|
||||
|
||||
### Plugin-Empfehlung: `vim-commentary`
|
||||
Mit diesem Plugin reicht ein Befehl:
|
||||
* `gcc`: Kommentiert die aktuelle Zeile um/aus.
|
||||
* `gc` (im Visual Mode): Kommentiert den markierten Block.
|
||||
|
||||
---
|
||||
|
||||
## 10. Konfiguration (.vimrc / init.lua)
|
||||
Einige Standard-Einstellungen, die jeder Power-User haben sollte:
|
||||
```vim
|
||||
set number " Absolute Zeilennummer der aktuellen Zeile
|
||||
set relativenumber " Relative Nummern für alle anderen Zeilen (ideal für 5j, 3k)
|
||||
set expandtab " Leerzeichen statt Tabs
|
||||
set tabstop=4 " Tab-Breite
|
||||
set ignorecase " Suche ignoriert Groß/Kleinschreibung...
|
||||
set smartcase " ...außer du tippst einen Großbuchstaben
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Profi-Tipp: Befehlsbuffer
|
||||
Wenn du einen komplexen Ex-Befehl (mit `:`) getippt hast und ihn bearbeiten willst, drücke im Normal-Modus `q:`. Es öffnet sich ein Fenster mit der Historie deiner Befehle, die du wie normalen Text bearbeiten und mit `Enter` neu ausführen kannst.
|
||||
|
||||
## Notizzettel
|
||||
- `:noh`: clear search highlighting
|
||||
- `s`: delete and insert
|
||||
- `s` Delete character under cursor, enter Insert mode
|
||||
- `S` Delete entire current line, enter Insert mode (equivalent to cc)
|
||||
- `{count}s` Delete count characters, enter Insert mode
|
||||
- Use f (find) followed by the character you want to jump to.
|
||||
- `f{char}` Jump to next occurrence of {char} on the current line
|
||||
- `F{char}` Jump to previous occurrence of {char} on the current line
|
||||
- `t{char}` Jump up to (one before) next occurrence of {char}
|
||||
- `T{char}` Jump up to previous occurrence of {char}
|
||||
- `;` Repeat last f/F/t/T forward
|
||||
- `,` Repeat last f/F/t/T backward
|
||||
Reference in New Issue
Block a user