diff --git a/(Neo) Vim/Vim Guide.md b/(Neo) Vim/Vim Guide.md new file mode 100644 index 0000000..b393fb1 --- /dev/null +++ b/(Neo) Vim/Vim Guide.md @@ -0,0 +1,161 @@ +## 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. \ No newline at end of file diff --git a/(Neo) Vim/Project-Wide Find and Replace in Neovim with Telescope and Quickfix List.md b/(Neo) Vim/_alt/Project-Wide Find and Replace in Neovim with Telescope and Quickfix List.md similarity index 100% rename from (Neo) Vim/Project-Wide Find and Replace in Neovim with Telescope and Quickfix List.md rename to (Neo) Vim/_alt/Project-Wide Find and Replace in Neovim with Telescope and Quickfix List.md diff --git a/(Neo) Vim/VIM Cheat Sheet.md b/(Neo) Vim/_alt/VIM Cheat Sheet.md similarity index 100% rename from (Neo) Vim/VIM Cheat Sheet.md rename to (Neo) Vim/_alt/VIM Cheat Sheet.md diff --git a/(Neo) Vim/Vim Cheatsheet.md b/(Neo) Vim/_alt/Vim Cheatsheet.md similarity index 100% rename from (Neo) Vim/Vim Cheatsheet.md rename to (Neo) Vim/_alt/Vim Cheatsheet.md diff --git a/(Neo) Vim/_alt/Vimgrep - Suchen über mehrere Dateien.md b/(Neo) Vim/_alt/Vimgrep - Suchen über mehrere Dateien.md new file mode 100644 index 0000000..1940bb2 --- /dev/null +++ b/(Neo) Vim/_alt/Vimgrep - Suchen über mehrere Dateien.md @@ -0,0 +1,111 @@ +In Vim kannst du mit regulären Ausdrücken über *mehrere Dateien* suchen, typischerweise über das Quickfix-/Location-List-System. Die wichtigsten Befehle dafür sind `:vimgrep` und `:grep`. + +--- + +## 1. Mehrdatei-Suche mit `:vimgrep` + +Grundform: + +```vim +:vimgrep /MUSTER/ {Dateiliste} +``` + +Beispiele: + +```vim +" In allen .py-Dateien im aktuellen Verzeichnis +:vimgrep /foo/ *.py + +" Rekursiv in allen .py-Dateien +:vimgrep /foo/ **/*.py + +" In allen Dateien des aktuellen Git-Repos (falls du Pfade generierst) +:vimgrep /foo/ `git ls-files` +``` + +Danach: + +- Quickfix-Fenster öffnen: + ```vim + :copen + ``` +- Zum nächsten Treffer springen: + ```vim + :cn + ``` +- Zum vorherigen Treffer springen: + ```vim + :cp + ``` + +--- + +## 2. Regex-Varianten: Standard vs. „very magic“ + +Vim-Regex kann per Präfix gesteuert werden: + +- Standard (abhängig von `'magic'`-Option) +- `\v` = *very magic* (fast alles ist Meta-Zeichen) +- `\m` = *magic* +- `\M` = *nomagic* +- `\V` = *very nomagic* + +Du kannst das direkt im Suchmuster verwenden: + +```vim +" Very magic: ( ) + ? | etc. sind sofort Metazeichen +:vimgrep /\vfoo(bar|baz)\d+/ **/*.txt + +" Standard-/Default-Verhalten (meistens wie :set magic) +:vimgrep /foo\(bar\|baz\)\d\+/ **/*.txt +``` + +Kurz gesagt: +- Wenn du „normale“ moderne RegEx-Syntax willst, nimm einfach `\v` am Anfang des Patterns. + +--- + +## 3. Suche mit `:grep` (externes Tool) + +Wenn `grepprg` entsprechend gesetzt ist (z.B. auf `rg`, `ag` oder `grep`): + +```vim +:grep foo **/*.py +:copen +``` + +Auch hier gilt: das Muster ist in vielen Fällen *nicht* Vim-Regex, sondern die Regex-Syntax des externen Tools (z.B. ripgrep). + +Wenn du explizit Vim-Regex willst, bleib bei `:vimgrep`. + +--- + +## 4. Dateien vorher definieren und dann suchen + +Du kannst zuerst eine Dateiliste definieren und dann in dieser Liste suchen: + +```vim +" Alle C-Dateien rekursiv in die Argumentliste +:args **/*.c + +" Jetzt in allen Dateien aus :args suchen +:vimgrep /\vmy_func\(/ ## + +" ## bedeutet: alle Dateien in der aktuellen Argumentliste +``` + +--- + +## 5. Treffern zur bestehenden Liste hinzufügen + +Wenn du mehrere Suchläufe kombinieren willst: + +```vim +:vimgrep /foo/ **/*.py +:vimgrepadd /bar/ **/*.py " fügt Treffer für bar hinzu +:copen +``` + +--- + +Wenn du mir sagst, ob du eher mit `rg`/`ag` arbeitest oder nur mit purem Vim, kann ich dir ein paar konkrete Konfig-/Mapping-Beispiele geben. \ No newline at end of file diff --git a/verschiedene/CVE Scan.md b/verschiedene/CVE Scan.md new file mode 100644 index 0000000..94f21df --- /dev/null +++ b/verschiedene/CVE Scan.md @@ -0,0 +1,42 @@ +„CVE Scan“ bedeutet im Kontext der Software-Entwicklung in der Regel: + +**Automatisches Durchsuchen von Software (Code, Bibliotheken, Containern, Systemen) nach bekannten Sicherheitslücken, die in der CVE-Datenbank erfasst sind.** + +### Was ist „CVE“? +- **CVE** = *Common Vulnerabilities and Exposures* +- Das ist ein weltweit genutztes, standardisiertes Verzeichnis von **bekannten Sicherheitslücken** mit eindeutigen IDs, z. B. `CVE-2023-12345`. +- Jede CVE beschreibt eine bestimmte Schwachstelle in Software/Hardware und hat meist eine **Schwerebewertung** (z. B. CVSS-Score). + +### Was macht ein „CVE Scan“ konkret? +Ein CVE-Scan-Tool: + +1. **Analysiert deine Software-Artefakte** + - z. B.: + - verwendete Bibliotheken/Dependencies (Maven, npm, pip, …) + - Container Images (Docker) + - Betriebssystem-Pakete (apt, yum, …) +2. **Vergleicht die gefundenen Komponenten** mit Datenbanken bekannter Schwachstellen: + - NVD (National Vulnerability Database) + - Vendor-Advisories + - Weitere Security-Feeds +3. **Listet gefundene bekannte Schwachstellen** auf: + - CVE-ID + - Schweregrad (z. B. „High“, „Critical“) + - betroffene Version + - ggf. empfohlene Fix-Version + +### Beispiel im Entwicklungsprozess +In einem CI/CD-Pipeline-Schritt „CVE Scan“ passiert typischerweise: + +- Nach dem Build wird das Artefakt (z. B. Container-Image, JAR, Node.js-App) gescannt. +- Der Scan findet z. B.: + - „Bibliothek `log4j` Version X enthält `CVE-2021-44228` (Critical)“ +- Je nach Policy: + - Pipeline schlägt fehl, wenn **kritische** CVEs gefunden werden + oder + - Es wird zumindest ein Report erzeugt, den das Team bearbeiten muss. + +### Warum ist das wichtig? +- Minimiert das Risiko, **bekannte** Sicherheitslücken in Produktion zu bringen. +- Hilft, Security in den **Entwicklungsprozess** zu integrieren (Shift Left). +- Unterstützt Compliance-Anforderungen (ISO 27001, BSI, interne Richtlinien).