Linux · Tag 1 · Kapitel 10 von 10

Editoren: nano & vi/vim

Zwei legendäre Texteditoren mit unterschiedlichen Philosophien. Wir lernen nano gründlich (das Werkzeug für jeden Admin-Alltag), schnuppern in vi/vim rein (das Werkzeug der Profis) und überleben das Lab 1.2 mit beiden.

📚 Kapitel 10 ⏱️ ca. 25 min Theorie + 30 min Lab 🧪 Lab 1.2
Inhalt dieses Kapitels
10.1

Zwei Editoren, zwei Welten

Überblick

In der Unix-Welt gibt es zwei klassische Texteditoren, die du als Admin kennen solltest: nano (freundlich, einfach) und vi/vim (mächtig, modus-basiert).

EditorErschienenPhilosophieLernkurve
nano 1999 „Einfach, freundlich, alle Tastenkürzel unten sichtbar.“ 0 — sofort nutzbar
vi / vim vi 1976, vim 1991 „Editieren mit minimaler Hand-Bewegung. Modus-basiert.“ steil, aber lohnenswert

Wann welchen?

  • nano — wenn du jetzt schnell eine Config-Datei ändern willst. Standardwahl im Admin-Alltag.
  • vim — wenn du Linux ernsthaft betreibst. Auf jedem Server vorinstalliert. Ohne Maus extrem schnell. Pflicht-Skill für Senior-Admins.
🎓
Trainer-Hinweis

Heute lernen wir nano gründlich und vi/vim grundlegend. Ziel: nano blind beherrschen, vi/vim genug, um nicht panisch zu werden, wenn du auf einem System landest, wo nano fehlt.

10.2

nano — der freundliche Editor

Pflicht

nano war ursprünglich ein Klon des pico-Editors (Teil des Mail-Clients Pine). Heute ist nano der „Default für Einsteiger“ auf den meisten Distros — bei Debian/Ubuntu bereits vorinstalliert, bei Rocky Minimal muss man ihn nachholen.

Installieren (falls nicht da)

bash
sudo dnf install nano -y

Starten und Aussehen

bash
# Neue Datei anlegen oder existierende öffnen
nano notizen.txt

# Mit Sprung zu Zeile 42
nano +42 datei.txt

# Read-only öffnen
nano -v /etc/passwd

Du landest sofort im Edit-Modus — du kannst tippen wie in einem normalen Editor. Am unteren Rand siehst du immer die wichtigsten Tastenkürzel:

┌─ Dateiname und Status ─────────────────────────────────┐ │ GNU nano 5.6.1 notizen.txt │ │ │ │ Hier tippst du. │ │ _ │ │ │ │ │ ├────────────────────────────────────────────────────────┤ │ ^G Help ^O Write Out ^W Where Is ^K Cut Text │ │ ^X Exit ^J Justify ^R Read File ^U Paste │ └────────────────────────────────────────────────────────┘ ^ = Strg-Taste M = Alt-Taste (Meta)
📌
Das schöne an nano

Die wichtigen Tastenkürzel stehen immer unten. Du musst nichts auswendig lernen. Wer einmal die Konvention ^ = Strg verstanden hat, kommt sofort klar.

Wichtigste Tastenkürzel

TastenkürzelFunktion
Strg + OSpeichern (Output / WriteOut) — dann Dateiname mit Enter bestätigen
Strg + XBeenden (mit Nachfrage, ob speichern)
Strg + WSuchen (Where Is)
Strg + \Suchen und Ersetzen
Strg + KAktuelle Zeile ausschneiden (in Buffer)
Strg + UBuffer einfügen (Uncut)
Strg + GHilfe-Seite öffnen
Strg + CAktuelle Cursor-Position anzeigen
Strg + _Zu bestimmter Zeile/Spalte springen
Alt + URückgängig (Undo) — nicht überall verfügbar
Alt + EWiederherstellen (Redo)
Alt + AMarken/Block-Modus starten

Mini-Demo zum Mitmachen

bash
nano hallo.txt

# Tipp rein:
#   Hallo Linux-Welt!
#   Heute lerne ich nano.
#
# Strg+O → Enter (speichern)
# Strg+X (beenden)

cat hallo.txt
10.3

vi / vim — der Profi-Editor

Survival

vi (gesprochen „wie-aih“ oder „wi“) wurde 1976 von Bill Joy für BSD geschrieben. vim (vi improved) ist die modernere Version mit Syntax-Highlighting, Undo, Plugins. Auf Rocky steht vi meist als Symlink auf vim.

Das Besondere an vim: er hat Modi. Eine Taste macht je nach Modus völlig unterschiedliche Dinge. Wer das nicht weiß, ist sofort verloren.

Die drei wichtigen Modi

┌─────────────────────┐ │ NORMAL-MODUS │ ← Start-Modus, Tasten = Befehle │ „Befehle geben“ │ └──────────┬──────────┘ ↑ │ ↑ ESC │ │ │ ESC │ │ │ ┌─────────┴──┐ │ ┌──┴────────────────┐ │ INSERT │ │ │ VISUAL-MODUS │ │ i, a, o │ │ │ v, V, Strg+v │ │ „Tippen“ │ │ │ „Auswählen“ │ └────────────┘ │ └───────────────────┘ │ ┌──────┴──────────┐ │ COMMAND-MODUS │ : ↑ ↓ z.B. :w :q │ „: am Anfang“ │ └─────────────────┘

Modus-Wechsel

Aus / NachTasteWas passiert?
Normal → InsertiInsert vor dem Cursor
Normal → InsertaAppend nach dem Cursor
Normal → Insertoneue Zeile darunter + Insert
Normal → InsertOneue Zeile darüber + Insert
Insert → NormalEscTippen beenden, zurück zu Befehlen
Normal → VisualvAuswahl per Zeichen
Normal → VisualVAuswahl per Zeile
Normal → Command:Befehlszeile öffnen

Bewegen im Normal-Modus

Pfeiltasten funktionieren in vim — du musst nichts auswendig lernen für die Navigation.

▶ Tiefer einsteigen: vim-Navigation mit hjkl statt Pfeiltasten
hlinks
jrunter
khoch
lrechts
wein Wort vorwärts
bein Wort rückwärts
0 (Null)Zeilenanfang
$Zeilenende
ggAnfang der Datei
GEnde der Datei
42G oder :42zu Zeile 42
/textvorwärts nach text suchen
n / Nnächster / vorheriger Treffer
⌨️
Wussten Sie schon? — Warum hjkl?

Bill Joy entwickelte vi 1976 auf einem ADM-3A Terminal. Diese Tastatur hatte keine eigenen Pfeiltasten — stattdessen waren die Pfeile aufgedruckt auf den Tasten h, j, k, l.

Heute ein Anachronismus, aber die Erinnerung bleibt: j hat im englischen Layout einen kleinen Haken nach unten — passend, weil j „runter“ bedeutet. Profis nutzen hjkl, weil die Finger nie die Home-Row verlassen müssen — das macht vim mit Übung schneller als jeden anderen Editor.

Auch interessant: Auf dem ADM-3A war zusätzlich das ~ auf der gleichen Taste wie das Home-Symbol — deshalb steht ~ in Unix bis heute für das Home-Verzeichnis.

Speichern und Beenden

Im Command-Modus (also : drücken):

:wDatei speichern (write)
:qbeenden (quit) — nur wenn keine Änderungen
:wqspeichern und beenden
:xwie :wq, speichert aber nur bei Änderungen
:q!beenden OHNE Speichern — Änderungen verwerfen
:w neuernameunter anderem Namen speichern
▶ Tiefer einsteigen: vim-Bearbeitungs-Kommandos

Bearbeiten im Normal-Modus

xZeichen unter Cursor löschen
ddaktuelle Zeile löschen (delete)
yyaktuelle Zeile kopieren (yank)
peinfügen (put)
uUndo
Strg + rRedo
rxZeichen unter Cursor durch x ersetzen
RReplace-Modus (überschreibt beim Tippen)

Erste vim-Session — minimaler Überlebenstest

bash
# vim öffnen
vim test.txt

# Du bist im NORMAL-Modus
# 1. Taste "i" drücken → INSERT-Modus
# 2. Tippe ein paar Zeilen
# 3. ESC → zurück zu NORMAL
# 4. ":wq" tippen → speichern und beenden

cat test.txt
😱
Hilfe! vim hängt!

Das berühmteste Anfänger-Erlebnis: du landest versehentlich in vim und kommst nicht mehr raus. Drei Schritte:

  1. Esc drücken — zurück in den Normal-Modus.
  2. :q! tippen — beenden ohne Speichern.
  3. Enter. Fertig.

Diese drei Schritte sind die wichtigste vim-Lektion: Esc, :q!, Enter. Lerne sie auswendig.

💡
vimtutor — das eingebaute Tutorial

vim bringt seinen eigenen Lehrgang mit. Ungefähr 30 Minuten und du kannst deutlich mehr als die meisten Linux-User:

bash
# Auf Rocky vorinstalliert, sonst:
sudo dnf install vim-enhanced -y

vimtutor
🧪 Lab 1.2 Konfigurationsdatei bearbeiten 30 min
📧 E-Mail vom Senior-Admin:
„Du sollst heute eine kleine Webserver-Konfiguration für HanovaTech anlegen und pflegen. Dabei wirst du nano produktiv nutzen und einmal kurz vim ausprobieren. Wenn du fertig bist: zeig mir die fertige Struktur.“
Teil A — Struktur und Dateien anlegen (15 min)
  1. Wechsle in dein Home und lege die folgende Struktur in einem mkdir -p-Aufruf an:
    ~/hanovatech/ ├── configs/ ├── logs/ └── docs/
  2. In configs/ nano öffnen und die Datei webserver.conf mit folgendem Inhalt anlegen:
    conf
    # HanovaTech Webserver Konfiguration
    # Stand: 2026-05-21
    # Verantwortlich: admin
    
    Hostname: web01.hanovatech.local
    Port: 80
    DocRoot: /var/www/hanovatech
    LogLevel: warn
  3. Mit Strg+O speichern, Strg+X beenden. Inhalt mit cat prüfen.
bash
# 1) Struktur
cd ~
mkdir -p hanovatech/{configs,logs,docs}
ls -R hanovatech/

# 2) Datei mit nano anlegen
cd hanovatech/configs/
nano webserver.conf
# Inhalt einfügen — Strg+O Enter Strg+X

# 3) Inhalt prüfen
cat webserver.conf
Teil B — Datei mit nano bearbeiten (15 min)
  1. Öffne webserver.conf wieder mit nano.
  2. Ändere den Port von 80 auf 8080.
  3. Suche mit Strg+W nach LogLevel und ändere den Wert auf info.
  4. Füge am Ende der Datei eine neue Zeile hinzu: MaxClients: 200.
  5. Speichern und beenden. Inhalt mit cat prüfen.

nano ist intuitiv — keine spezielle Befehlsfolge, du editierst wie in einem normalen Editor. Wichtig:

  • Strg+W → „LogLevel“ tippen → Enter → springt zur Stelle
  • Zur letzten Zeile: Strg+End oder einfach mit Pfeil-runter
  • Strg+O → Enter (speichern) → Strg+X (beenden)

cat webserver.conf bestätigt die Änderungen.

Teil C — Mit vi/vim spielen (15 min)
  1. In ~/hanovatech/docs/ öffne mit vim eine neue Datei README.md.
  2. Wechsle mit i in den Insert-Modus und schreibe folgenden Text:
    markdown
    # HanovaTech Webserver
    
    Dieses Repository enthält die Konfiguration unseres
    HanovaTech-Webservers.
    
    ## Struktur
    - configs/    Konfigurationsdateien
    - logs/       Logfiles
    - docs/       Dokumentation
  3. Drücke Esc, dann tippe :wq + Enter — Datei wird gespeichert und vim beendet.
  4. Öffne die Datei nochmal mit vim. Springe mit gg an den Anfang, mit G ans Ende.
  5. Lösche mit dd eine Zeile und mache es mit u rückgängig.
  6. Beende vim mit :q (ohne Änderungen) oder :q! (mit Verwerfen).
bash
# 9) vim öffnen
cd ~/hanovatech/docs/
vim README.md

# 10) i  → INSERT, Text tippen
# 11) Esc → :wq → Enter

# 12) gg  → an den Anfang
#     G   → ans Ende

# 13) dd  → Zeile löschen
#     u   → undo

# 14) :q   → beenden (wenn nichts geändert)
#     :q!  → beenden mit Verwerfen
Teil D — Suchen, Ersetzen, Multi-Edit (15 min)
  1. Öffne webserver.conf nochmal mit nano.
  2. Nutze Strg+\ (Suchen und Ersetzen): ersetze warn durch debug. Antworte auf die Nachfragen sinnvoll.
  3. Speichere und beende.
  4. Kopiere webserver.conf nach webserver.conf.bak (Backup).
  5. Lege mit nano in docs/ eine Datei CHANGELOG.md mit einem Eintrag an: "2026-05-21 — Initial Setup durch admin".
bash
# 15-17) nano + Replace
cd ~/hanovatech/configs/
nano webserver.conf
# Strg+\  → "warn" → Enter → "debug" → Enter
# Bei Nachfrage "A" für "All"
# Strg+O Enter Strg+X

# 18) Backup
cp webserver.conf webserver.conf.bak

# 19) CHANGELOG
nano ~/hanovatech/docs/CHANGELOG.md
# Inhalt: 2026-05-21 - Initial Setup durch admin
# Strg+O Enter Strg+X
🌟 Bonus für schnelle Teilnehmer
  1. Öffne webserver.conf nun mit vim (statt nano). Ändere mit dem vim-Befehl :%s/8080/8443/g alle Vorkommen von 8080 auf 8443. Speichern mit :wq.
  2. Erkläre einem Kollegen in einem Satz den Unterschied zwischen :wq und :q!.
  3. Recherchiere und probiere aus: was macht :set number in vim?
vim
# 20) Search&Replace in vim
vim webserver.conf
:%s/8080/8443/g    " globally ersetzen
:wq                " speichern + beenden

# 21) :wq speichert UND beendet.
#     :q! verwirft Änderungen UND beendet.

# 22) :set number     " zeigt Zeilennummern am linken Rand
#     :set nonumber   " schaltet sie wieder aus
🎉
Lab 1.2 geschafft?

Wenn du Teil A–D durch hast: du beherrschst nano produktiv und kannst vim überleben. Das reicht für 90 % aller Admin-Aufgaben. Wer den Bonus mitmacht, hat den vi-Drachen besiegt.

🛠️
Cheat-Sheet-Bingo (10 Minuten)

Trainer-Hinweis: Cheat-Sheet aus Kapitel 12 austeilen ODER digital öffnen lassen.

Aufgabe: Die folgenden 10 Aufgaben löst du AUSSCHLIESSLICH mit Hilfe des Cheat-Sheets. Keine Tab-Completion, kein Vor- oder Zurückblättern in den Kapiteln. Trainiere das Nachschlagen.

  1. Zeige den aktuellen Pfad an.
  2. Wechsle ins /tmp-Verzeichnis.
  3. Liste den Inhalt von /etc, sortiert nach Größe, mit human-readable Größenangaben.
  4. Erstelle in deinem Home die verschachtelte Struktur uebung/2026/q2 in einem Befehl.
  5. Erstelle in uebung/2026/q2 eine Datei test.txt.
  6. Kopiere /etc/hostname in dein Home als hostname.bak.
  7. Schaue dir die ersten 3 Zeilen der Datei /etc/os-release an.
  8. Wechsle zurück ins vorherige Verzeichnis (Toggle).
  9. Lösche das Verzeichnis uebung/ komplett mit allem Inhalt.
  10. Zeige die aktuelle Systemzeit an.

Bonus: Wer in unter 5 Minuten fertig ist, hilft den Nachbarn.

bash
pwd
cd /tmp
ls -lhS /etc
mkdir -p ~/uebung/2026/q2
touch ~/uebung/2026/q2/test.txt
cp /etc/hostname ~/hostname.bak
head -3 /etc/os-release
cd -
rm -r ~/uebung
date

Trainer-Hinweis: Wer's nicht schafft, dem fehlen Cheat-Sheet-Reflexe — das ist okay an Tag 1. Cheat-Sheet behält jeder TN, übt zu Hause.

10.5

Typische Anfänger-Fehler

Vorsicht
Fehler 1 — vim ohne Esc verlassen wollen

Du tippst :q oder :wq, aber die Zeichen erscheinen im Text statt am unteren Rand. Du bist noch im Insert-Modus. Lösung: Esc drücken, dann nochmal versuchen.

Fehler 2 — falscher Modus in vim

vim verhält sich „komisch“, Tasten machen unerwartete Dinge. Faustregel: bei jedem Verwirrungs-Moment einmal Esc drücken. Damit bist du sicher im Normal-Modus.

Fehler 3 — In nano ^ als „caret“ tippen

nano-Hilfe sagt „^O Speichern“. Manche tippen tatsächlich ein ^-Zeichen plus O. Falsch! ^ steht für die Strg-Taste. ^O heißt: Strg + O.

Fehler 4 — Vergessenes Speichern

nano fragt zwar beim Beenden („Save modified buffer?“), aber wer hektisch mit „N“ antwortet, verliert seine Arbeit. Lösung: angewöhnen, vor dem Beenden Strg+O zu drücken — dann ist gespeichert, und Strg+X läuft ohne Frage durch.

Fehler 5 — Datei mit sudo öffnen vergessen

Du hast eine wichtige /etc/...-Datei in nano bearbeitet und bei Strg+O kommt „Error writing: Permission denied“. Lösung: Datei mit sudo nano /etc/... öffnen. Workaround in vim mit :w !sudo tee %.

🎯

Kontrollfragen zum Kapitel

Selbst-Check
  1. Welche zwei großen Editoren lernen wir heute, und welcher ist für Einsteiger?
  2. Welche Tasten speichern und beenden in nano?
  3. Wie heißt das Zeichen ^ in nano-Anleitungen?
  4. Was sind die drei wichtigen Modi von vim?
  5. Wie kommst du in vim aus dem Insert-Modus zurück in den Normal-Modus?
  6. Welche drei Schritte sichern dich, falls du in vim gefangen bist?
  1. nano (Einsteiger) und vi/vim (Profis). nano ist Standard für Einsteiger.
  2. Strg+O speichert, Strg+X beendet.
  3. ^ ist die Konvention für die Strg-Taste. ^O = Strg + O.
  4. Normal-Modus (Tasten = Befehle), Insert-Modus (Tippen wie normaler Editor), Visual-Modus (Auswahl). Plus Command-Modus (mit :).
  5. Mit der Esc-Taste.
  6. Esc, dann :q! tippen, dann Enter.