update
This commit is contained in:
@@ -0,0 +1,140 @@
|
||||
Kurz gesagt: **Nein – GNU Stow führt keine Skripte aus.**
|
||||
Und das ist auch Absicht 🙂
|
||||
|
||||
GNU Stow macht **nur eine Sache**:
|
||||
|
||||
> Es erzeugt und entfernt Symlinks.
|
||||
|
||||
Keine Hooks.
|
||||
Keine Post-Deploy-Skripte.
|
||||
Keine Automatik.
|
||||
|
||||
---
|
||||
|
||||
# 🧠 Warum ist das so?
|
||||
|
||||
Stow ist bewusst:
|
||||
|
||||
* minimalistisch
|
||||
* deterministisch
|
||||
* side-effect-frei
|
||||
|
||||
Dadurch bleibt dein Setup transparent und reproduzierbar.
|
||||
|
||||
---
|
||||
|
||||
# ✅ Aber: Man kann es kombinieren
|
||||
|
||||
Wenn du beim „Deploy“ zusätzlich Dinge tun willst (z. B. Monitor-Symlink setzen, Pakete installieren, Cache leeren, etc.), gibt es saubere Lösungen:
|
||||
|
||||
---
|
||||
|
||||
# 🔹 Lösung 1: Bootstrap-Script (empfohlen)
|
||||
|
||||
Du schreibst dir ein Script wie:
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
cd ~/dotfiles
|
||||
|
||||
echo "→ Stowing configs"
|
||||
stow hypr
|
||||
stow waybar
|
||||
stow zsh
|
||||
|
||||
echo "→ Setting monitor config"
|
||||
ln -sf desktop.conf hypr/.config/hypr/monitors/current.conf
|
||||
|
||||
echo "→ Reloading Hyprland"
|
||||
hyprctl reload
|
||||
```
|
||||
|
||||
Dann einfach:
|
||||
|
||||
```bash
|
||||
./install.sh
|
||||
```
|
||||
|
||||
💡 Das ist die professionellste Lösung.
|
||||
|
||||
---
|
||||
|
||||
# 🔹 Lösung 2: Hostname-basierte Logik im Script
|
||||
|
||||
```bash
|
||||
HOST=$(hostname)
|
||||
|
||||
if [[ "$HOST" == "desktop" ]]; then
|
||||
ln -sf desktop.conf hypr/.config/hypr/monitors/current.conf
|
||||
elif [[ "$HOST" == "laptop" ]]; then
|
||||
ln -sf laptop.conf hypr/.config/hypr/monitors/current.conf
|
||||
fi
|
||||
```
|
||||
|
||||
Dann musst du nichts manuell wählen.
|
||||
|
||||
---
|
||||
|
||||
# 🔹 Lösung 3: Makefile (sehr elegant)
|
||||
|
||||
Beispiel:
|
||||
|
||||
```make
|
||||
install:
|
||||
stow hypr
|
||||
stow waybar
|
||||
./scripts/select-monitor.sh
|
||||
```
|
||||
|
||||
Dann:
|
||||
|
||||
```bash
|
||||
make install
|
||||
```
|
||||
|
||||
Sehr beliebt in Dotfile-Repos.
|
||||
|
||||
---
|
||||
|
||||
# 🔹 Lösung 4: „echte“ Dotfile-Manager
|
||||
|
||||
Wenn du wirklich Logik + Templates willst:
|
||||
|
||||
* chezmoi
|
||||
* yadm
|
||||
|
||||
Diese können:
|
||||
|
||||
* Hostname erkennen
|
||||
* Variablen verwenden
|
||||
* Templates generieren
|
||||
* Skripte ausführen
|
||||
|
||||
Aber sie sind komplexer als Stow.
|
||||
|
||||
---
|
||||
|
||||
# 🎯 Empfehlung für dich (Hyprland + mehrere Systeme)
|
||||
|
||||
Da du:
|
||||
|
||||
* Monitor-Configs pro System brauchst
|
||||
* wahrscheinlich Arch nutzt
|
||||
* modular arbeiten willst
|
||||
|
||||
👉 **Stow + Bootstrap-Script** ist die perfekte Balance.
|
||||
|
||||
---
|
||||
|
||||
# 💬 Kurzantwort auf deine Frage
|
||||
|
||||
| Frage | Antwort |
|
||||
| ------------------------ | ----------------- |
|
||||
| Führt Stow Skripte aus? | ❌ Nein |
|
||||
| Kann man es kombinieren? | ✅ Ja |
|
||||
| Beste Praxis? | Stow + install.sh |
|
||||
|
||||
---
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
[[Linux Musikprogramme]]
|
||||
[[Softlinks 1]]
|
||||
[[Synchronisation & Backup 1]]
|
||||
|
||||
# Konsolen Know-How
|
||||
[[Linux Konsole Zeichen löschen]]
|
||||
[[Paketinstallation aus tar.gz]]
|
||||
[[Disable KVM for VirtualBox]]
|
||||
[[Linux Terminal Shortcut]]
|
||||
[[Drives & Mounts 1]]
|
||||
[[Computerkram/find]]
|
||||
[[Link-Verknüpfung in Linux]]
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,458 @@
|
||||
Hier ist ein kompaktes, aber vollständiges **VIM Cheat Sheet** 📝
|
||||
|
||||
---
|
||||
|
||||
## 🔹 Modi in VIM
|
||||
|
||||
|Modus|Bedeutung|Wechsel|
|
||||
|---|---|---|
|
||||
|**Normal Mode**|Navigation & Befehle|`Esc`|
|
||||
|**Insert Mode**|Texteingabe|`i`, `a`, `o`, etc.|
|
||||
|**Visual Mode**|Text markieren|`v`, `V`, `Ctrl+v`|
|
||||
|**Command Mode**|Speichern, Beenden, etc.|`:`|
|
||||
|
||||
---
|
||||
|
||||
## 🔹 Insert Mode Befehle
|
||||
|
||||
|Befehl|Wirkung|
|
||||
|---|---|
|
||||
|`i`|Vor Cursor einfügen|
|
||||
|`a`|Nach Cursor einfügen|
|
||||
|`I`|Am Zeilenanfang einfügen|
|
||||
|`A`|Am Zeilenende einfügen|
|
||||
|`o`|Neue Zeile unterhalb|
|
||||
|`O`|Neue Zeile oberhalb|
|
||||
|
||||
---
|
||||
|
||||
## 🔹 Navigation (Normal Mode)
|
||||
|
||||
### Zeichenweise
|
||||
|
||||
```
|
||||
h ← j ↓ k ↑ l →
|
||||
```
|
||||
|
||||
### Wortweise
|
||||
|
||||
```
|
||||
w nächstes Wort
|
||||
b vorheriges Wort
|
||||
e Wortende
|
||||
```
|
||||
|
||||
### Zeilenweise
|
||||
|
||||
```
|
||||
0 Zeilenanfang
|
||||
^ Erstes Nicht-Leerzeichen
|
||||
$ Zeilenende
|
||||
```
|
||||
|
||||
### Datei
|
||||
|
||||
```
|
||||
gg Anfang der Datei
|
||||
G Ende der Datei
|
||||
:n Gehe zu Zeile n
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔹 Löschen
|
||||
|
||||
|Befehl|Wirkung|
|
||||
|---|---|
|
||||
|`x`|Zeichen löschen|
|
||||
|`dd`|Zeile löschen|
|
||||
|`dw`|Wort löschen|
|
||||
|`d$`|Bis Zeilenende löschen|
|
||||
|`d0`|Bis Zeilenanfang löschen|
|
||||
|
||||
💡 Kombination: `d` + Bewegung funktioniert immer
|
||||
(z.B. `d3w` = 3 Wörter löschen)
|
||||
|
||||
---
|
||||
|
||||
## 🔹 Kopieren & Einfügen
|
||||
|
||||
|Befehl|Wirkung|
|
||||
|---|---|
|
||||
|`yy`|Zeile kopieren|
|
||||
|`yw`|Wort kopieren|
|
||||
|`p`|Nach Cursor einfügen|
|
||||
|`P`|Vor Cursor einfügen|
|
||||
|
||||
#### Register
|
||||
Vor alle Kopieren oder Einfügen Befehle kann ein `"3` gestellt werden, um ins 3. Register zu schreiben bzw. daraus heraus zu lesen. Z.b. kopiert `"7yw` das Wort ins 7. Register und `"4p` fügt das 4. Register nach dem Curser ein.
|
||||
💡 Das spezielle Register `+`/`*` ist das System-Clipboard, sehr Praktisch zum Austausch von Text mit anderen Programmen
|
||||
Alle Register ansehen: `:reg`
|
||||
💡 Das spezielle Register `%` enthält den aktuellen Dateipfad -> aktuelle Dateipfad in System-Clipboard: `:let @+=@%`.
|
||||
|
||||
|
||||
---
|
||||
|
||||
## 🔹 Undo / Redo
|
||||
|
||||
```
|
||||
u Undo
|
||||
Ctrl+r Redo
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔹 Visual Mode
|
||||
|
||||
|Befehl|Wirkung|
|
||||
|---|---|
|
||||
|`v`|Zeichenweise markieren|
|
||||
|`V`|Ganze Zeile markieren|
|
||||
|`Ctrl+v`|Block markieren|
|
||||
|
||||
Nach Markierung:
|
||||
|
||||
```
|
||||
d löschen
|
||||
y kopieren
|
||||
> einrücken
|
||||
< ausrücken
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔹 Suchen & Ersetzen
|
||||
|
||||
```
|
||||
/text Vorwärts suchen
|
||||
?text Rückwärts suchen
|
||||
n Nächstes Ergebnis
|
||||
N Vorheriges Ergebnis
|
||||
```
|
||||
|
||||
Ersetzen:
|
||||
|
||||
```
|
||||
:%s/alt/neu/g Ganze Datei
|
||||
:s/alt/neu/g Aktuelle Zeile
|
||||
:%s/alt/neu/gc Mit Bestätigung
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔹 Speichern & Beenden
|
||||
|
||||
```
|
||||
:w Speichern
|
||||
:q Beenden
|
||||
:wq Speichern & Beenden
|
||||
:x Speichern & Beenden
|
||||
:q! Ohne Speichern beenden
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔹 Fenster & Tabs
|
||||
|
||||
```
|
||||
:split Horizontal teilen
|
||||
:vsplit Vertikal teilen
|
||||
Ctrl+w w Zwischen Fenstern wechseln
|
||||
:tabnew Neuer Tab
|
||||
gt Nächster Tab
|
||||
gT Vorheriger Tab
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔹 Nützliche Shortcuts
|
||||
|
||||
```
|
||||
. Letzte Aktion wiederholen
|
||||
>> Zeile einrücken
|
||||
<< Zeile ausrücken
|
||||
ciw Wort ändern
|
||||
cc Zeile ändern
|
||||
J Zeilen zusammenführen
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔹 Makros
|
||||
|
||||
```
|
||||
qa Aufnahme in Register a starten
|
||||
q Aufnahme stoppen
|
||||
@a Makro a ausführen
|
||||
@@ Letztes Makro wiederholen
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔹 Zahlen-Präfixe (Sehr wichtig!)
|
||||
|
||||
Viele Befehle lassen sich multiplizieren:
|
||||
|
||||
```
|
||||
3dd 3 Zeilen löschen
|
||||
5w 5 Wörter vor
|
||||
2yy 2 Zeilen kopieren
|
||||
```
|
||||
|
||||
---
|
||||
# Zeilennummern aus- und anschalten
|
||||
|
||||
---
|
||||
|
||||
## 🔹 Absolute Zeilennummern
|
||||
|
||||
### Einschalten:
|
||||
|
||||
```vim
|
||||
:set number
|
||||
```
|
||||
|
||||
### Ausschalten:
|
||||
|
||||
```vim
|
||||
:set nonumber
|
||||
```
|
||||
|
||||
### Toggle:
|
||||
|
||||
```vim
|
||||
:set number!
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔹 Relative Zeilennummern
|
||||
|
||||
### Einschalten:
|
||||
|
||||
```vim
|
||||
:set relativenumber
|
||||
```
|
||||
|
||||
### Ausschalten:
|
||||
|
||||
```vim
|
||||
:set norelativenumber
|
||||
```
|
||||
|
||||
### Toggle:
|
||||
|
||||
```vim
|
||||
:set relativenumber!
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔹 Absolute + Relative kombinieren (Sehr beliebt 🔥)
|
||||
|
||||
Viele nutzen diese Kombination:
|
||||
|
||||
```vim
|
||||
:set number relativenumber
|
||||
```
|
||||
|
||||
👉 Ergebnis:
|
||||
|
||||
* Aktuelle Zeile = **absolute Nummer**
|
||||
* Alle anderen Zeilen = **relative Nummern**
|
||||
|
||||
Beispiel:
|
||||
|
||||
```
|
||||
8
|
||||
2
|
||||
1
|
||||
10 ← aktuelle Zeile
|
||||
1
|
||||
2
|
||||
3
|
||||
```
|
||||
|
||||
Das ist perfekt für Bewegungen wie:
|
||||
|
||||
```
|
||||
5j
|
||||
3k
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔹 Dauerhaft aktivieren (.vimrc)
|
||||
|
||||
In deiner `~/.vimrc`:
|
||||
|
||||
```vim
|
||||
set number
|
||||
set relativenumber
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔹 Smart Toggle Mapping (Optional ⭐)
|
||||
|
||||
Viele nutzen ein Keybinding:
|
||||
|
||||
```vim
|
||||
nnoremap <leader>n :set number! relativenumber!<CR>
|
||||
```
|
||||
|
||||
Dann kannst du mit:
|
||||
|
||||
```
|
||||
\ n
|
||||
```
|
||||
|
||||
(beim Standard-`leader`) beide gleichzeitig toggeln.
|
||||
|
||||
---
|
||||
|
||||
|
||||
# Block Aus- und Einkommentieren
|
||||
|
||||
---
|
||||
|
||||
# 🔹 1️⃣ Rein mit Vim (ohne Plugin)
|
||||
|
||||
## ✅ Ganze Zeilen im Visual Mode kommentieren
|
||||
|
||||
### Schritt 1: Block markieren
|
||||
|
||||
* `V` → Zeilenweise markieren
|
||||
* `j / k` → Bereich wählen
|
||||
|
||||
### Schritt 2: Kommentarzeichen einfügen
|
||||
|
||||
Beispiel für `#`:
|
||||
|
||||
```vim
|
||||
:s/^/# /
|
||||
```
|
||||
|
||||
Im Visual Mode einfach:
|
||||
|
||||
```vim
|
||||
:'<,'>s/^/# /
|
||||
```
|
||||
|
||||
👉 Fügt `# ` am Anfang jeder markierten Zeile ein.
|
||||
|
||||
---
|
||||
|
||||
## 🔹 Auskommentieren
|
||||
|
||||
```vim
|
||||
:'<,'>s/^# //
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔹 Noch schneller (ohne `:` tippen)
|
||||
|
||||
Markieren mit `V`, dann:
|
||||
|
||||
```vim
|
||||
:s/^/# /
|
||||
```
|
||||
|
||||
Vim setzt `'<,'>` automatisch.
|
||||
|
||||
---
|
||||
|
||||
# 🔹 2️⃣ Noch effizienter: Visual Block Mode (Sehr elegant ⚡)
|
||||
|
||||
Perfekt für feste Kommentarzeichen wie `#`, `//`, `--`.
|
||||
|
||||
### Schritt 1
|
||||
|
||||
```
|
||||
Ctrl + v
|
||||
```
|
||||
|
||||
### Schritt 2
|
||||
|
||||
Mit `j/k` mehrere Zeilen markieren (nur Spalte 0)
|
||||
|
||||
### Schritt 3
|
||||
|
||||
```
|
||||
Shift + i
|
||||
#
|
||||
Esc
|
||||
```
|
||||
|
||||
💥 Vim fügt das in alle markierten Zeilen ein.
|
||||
|
||||
---
|
||||
|
||||
## 🔹 Entfernen mit Block Mode
|
||||
|
||||
1. `Ctrl + v`
|
||||
2. Erste 2 Zeichen (`# `) markieren
|
||||
3. `d`
|
||||
|
||||
---
|
||||
|
||||
# 🔹 3️⃣ Beste Lösung: Plugin (Empfohlen 🔥)
|
||||
|
||||
Wenn du regelmäßig kommentierst → nimm ein Plugin.
|
||||
|
||||
Sehr beliebt:
|
||||
|
||||
* vim-commentary von Tim Pope
|
||||
|
||||
### Installation (mit vim-plug):
|
||||
|
||||
```vim
|
||||
Plug 'tpope/vim-commentary'
|
||||
```
|
||||
|
||||
### Nutzung:
|
||||
|
||||
* `gcc` → aktuelle Zeile toggeln
|
||||
* `gc` (im Visual Mode) → Block toggeln
|
||||
|
||||
💎 Vorteil:
|
||||
|
||||
* erkennt automatisch Kommentarzeichen je nach Dateityp
|
||||
* funktioniert mit `//`, `#`, `--`, `/* */`, etc.
|
||||
|
||||
---
|
||||
|
||||
# 🔹 4️⃣ Absolute Power-User Lösung (Ohne Plugin, aber smart)
|
||||
|
||||
In `.vimrc`:
|
||||
|
||||
```vim
|
||||
vnoremap <leader>c :s/^/# /<CR>
|
||||
vnoremap <leader>u :s/^# //<CR>
|
||||
```
|
||||
|
||||
Dann:
|
||||
|
||||
```
|
||||
\c → kommentieren
|
||||
\u → auskommentieren
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# 🔥 Meine Empfehlung
|
||||
|
||||
| Wenn du... | Lösung |
|
||||
| ----------------------------- | ----------------- |
|
||||
| Nur selten kommentierst | Visual Block Mode |
|
||||
| Viel programmierst | vim-commentary |
|
||||
| Minimalistisch bleiben willst | eigenes Mapping |
|
||||
|
||||
---
|
||||
# Verschiedenes
|
||||
- `%`: zur nächsten Klammer
|
||||
- `TOhtml`: HTML Export
|
||||
- `:ls`: Buffer anzeigen -> `:b 3` den 3. Buffer öffnen
|
||||
- `.` : letzte Aktion wiederholen
|
||||
- `:e path/to/file` öffnet Datei, nur `:e` aktualisiert die geöffnete Datei, `:e!` verwirft dabei alle Änderungen
|
||||
Reference in New Issue
Block a user