Was machst du, wenn du während der Arbeit mit Claude Code mal eben „eine Datei ansehen oder bearbeiten" möchtest?
Inhaltsverzeichnis
Beim Arbeiten mit Claude Code kommt es häufig vor, dass man „kurz den Inhalt einer Datei prüfen" möchte. Man kann zwar schnell cat oder less verwenden, aber manchmal möchte man den Code auch ordentlich mit Syntax-Highlighting lesen.
Man könnte einfach VS Code oder Cursor öffnen, aber wenn man mehrere Projekte mit laufenden IDEs hat, summiert sich der Speicherverbrauch spürbar. Kennt ihr das Gefühl: „Ich will nur kurz eine Datei ansehen, aber dafür extra eine IDE zu starten ist zu schwerfällig"?
In diesem Artikel stelle ich zwei Lösungen vor, die vollständig im Terminal funktionieren.
- Nur zum Lesen:
bat: Eine erweiterte Version voncat. Mit Syntax-Highlighting und unkomplizierter Mausauswahl. - Wenn auch Bearbeiten in Frage kommt: Neovim: Ein leichtgewichtiger Editor, der Dateien mit Syntax-Highlighting öffnet und bei Bedarf auch Bearbeitungen ermöglicht.
Übrigens verwende ich Ghostty als Terminal. Es ist leichtgewichtig und ermöglicht einfache Bildschirmteilung, was ich sehr schätze. Claude Code in einem Bereich laufen lassen und im anderen Bereich mit bat oder Neovim Dateien prüfen - diese Arbeitsweise ist äußerst angenehm.
Die einfachste Option: cat / less / tail
Bevor ich auf bat eingehe, möchte ich kurz die standardmäßig verfügbaren Befehle erwähnen. Wenn man „nur den Inhalt sehen möchte, ohne Syntax-Highlighting", reicht das völlig aus.
# Gesamten Dateiinhalt direkt anzeigen
cat src/index.ts
# Wenn man beim Lesen scrollen möchte
less src/index.ts
# Wenn man nur das Ende prüfen möchte
tail -20 src/index.ts
Bei less scrollt man mit der Leertaste eine Bildschirmseite weiter und beendet mit q. Die Suche funktioniert mit / gefolgt vom Suchbegriff.
Allerdings haben diese Befehle kein Syntax-Highlighting. Beim Lesen von Code ist das Fehlen von Farbe doch recht mühsam.
Die beste Lösung zum Lesen: bat
bat ist ein Klon von cat und verfügt von Haus aus über Syntax-Highlighting und Paging (entspricht less). Es ist ein modernes CLI-Tool in Rust und gilt als Standard-Ersatz für cat.
Die Installation ist mit Homebrew ein Einzeiler.
brew install bat
Die Verwendung ist nahezu identisch mit cat.
bat src/index.ts
Bei langen Dateien wechselt es automatisch in den Paging-Modus, scrollt wie less mit der Leertaste und beendet mit q. Bei kurzen Dateien gibt es den Inhalt direkt wie cat aus, ohne den Pager zu verwenden - es ist also als vollwertiger Ersatz für cat nutzbar.
Wie verhält sich die Mausbedienung?
bat (das intern less verwendet) erfasst keine Mausereignisse. Daher verarbeitet die Terminal-Seite die Mausauswahl ganz normal. Drag-Auswahl → Command+C funktioniert direkt. Man muss sich keine Sondertasten merken wie beim später vorgestellten Neovim.
Auch das Scrollen mit dem Mausrad funktioniert in Ghostty direkt auf der angezeigten Seite, ohne zusätzliche Konfiguration.
Für den täglichen Einsatz als cat-Ersatz
Wenn man bat wie cat verwenden möchte, ist das Einrichten eines Alias die übliche Vorgehensweise.
alias cat='bat --plain --paging=never'
--plain entfernt Dekorationen (Zeilennummern und Gitternetz), --paging=never gibt auch kurze Dateien direkt aus, ohne den Pager zu verwenden. So kann man es wie cat verwenden und trotzdem von Syntax-Highlighting profitieren.
Ich selbst habe jedoch keinen Alias eingerichtet. Ich möchte das Verhalten bei der Verwendung von cat in Shell-Skripten konsistent halten, und es ist für mich klarer, bewusst bat einzutippen, wenn ich etwas mit Syntax-Highlighting sehen möchte.
Wenn auch Bearbeiten in Frage kommt: Neovim
bat ist ein reines Lesewerkzeug. Wenn man „nach dem Lesen noch etwas anpassen möchte", ist ein Editor gefragt. Im Folgenden stelle ich die Einrichtung von Neovim vor. Keine Erfahrung mit Vim-artigen Editoren ist kein Problem.
Warum Neovim statt Vim?
Wenn man an einen Terminal-Editor denkt, fällt einem zuerst Vim ein, aber in diesem Artikel verwende ich Neovim. Neovim ist ein Fork von Vim, und die grundlegenden Bedienkonzepte sind identisch. Der Unterschied liegt im Umfang dessen, was ohne Konfiguration sofort nutzbar ist.
Mit dem nackten Vim müsste man für dasselbe Ergebnis einiges konfigurieren: Syntax-Highlighting aktivieren, autoread setzen, Zeilennummern anzeigen, Backspace-Verhalten korrigieren - Einstellungen, ohne die man kaum arbeiten kann. In Neovim sind diese standardmäßig aktiviert, sodass man mit minimaler Konfiguration ans Ziel kommt.
Erfahrene Vim-Nutzer können dieselbe Konfiguration in .vimrc schreiben und die gleiche Umgebung erstellen. Da ich selbst kein Vim-Experte bin, war Neovim, das auch ohne viel Konfiguration praktisch nutzbar ist, für mich einfacher. Für Einsteiger ist Neovim zugänglicher.
Neovim installieren und starten
Unter macOS geht das mit Homebrew in einem Schritt.
brew install neovim
Unter Ubuntu und ähnlichen Systemen:
sudo apt install neovim
Überprüfen, ob die Installation erfolgreich war:
nvim --version
Eine Datei öffnet man mit nvim Dateiname.
nvim src/index.ts
Das wichtige Konzept der „Modi"
Wer Neovim zum ersten Mal verwendet, ist vielleicht verwirrt, dass Tastatureingaben keine Zeichen einfügen. Das liegt daran, dass Neovim ein „Modi"-System verwendet. Direkt nach dem Start befindet man sich im Normalmodus, in dem alle Tasteneingaben als „Befehle" interpretiert werden.
Es gibt nur drei Modi, die man kennen muss.
| Taste | Modus | Verwendung |
|---|---|---|
| (direkt nach dem Start) | Normalmodus | Cursor bewegen, Befehle ausführen |
i | Einfügemodus | Zeichen eingeben und bearbeiten |
v / V | Visueller Modus | Bereich auswählen (v zeichenweise, V zeilenweise) |
Aus jedem Modus kehrt man mit Esc in den Normalmodus zurück. Im Zweifelsfall zweimal Esc drücken - das reicht. In der Statusleiste am unteren Bildschirmrand wird -- INSERT -- oder -- VISUAL -- angezeigt, sodass man den aktuellen Modus immer auf einen Blick erkennt.
Speichern und Beenden
Im Normalmodus öffnet : die Befehlseingabe. Diese Grundbefehle sollte man kennen.
| Befehl | Aktion |
|---|---|
:w | Speichern |
:q | Beenden |
:wq | Speichern und beenden |
:q! | Ohne Speichern erzwungen beenden |
„Ich weiß nicht, wie ich es schließen soll" ist ein klassisches Vim-Problem, aber mit :q! kommt man immer heraus.
Automatisches Neuladen bei Änderungen durch Claude Code
Manchmal hat man eine Datei in Neovim geöffnet und lässt Claude Code im benachbarten Bereich arbeiten. Es ist praktisch, wenn Neovim die Datei automatisch neu lädt, wenn Claude Code sie verändert.
Die Konfigurationsdatei ist ~/.config/nvim/init.vim. Falls sie noch nicht existiert, erstellt man das Verzeichnis mit:
mkdir -p ~/.config/nvim
nvim ~/.config/nvim/init.vim
Folgenden Inhalt einfügen:
set autoread
set number
syntax on
au CursorHold,CursorHoldI * checktime
au FocusGained,BufEnter * checktime
autoread ist in Neovim standardmäßig aktiviert, wird hier aber zur Verdeutlichung der Absicht explizit gesetzt. Allerdings löst autoread allein das Neuladen nur in begrenzten Situationen aus, etwa nach der Ausführung von Shell-Befehlen oder bei Fokuswiederkehr. Durch die beiden Zeilen mit au CursorHold und au FocusGained wird checktime (Prüfung auf externe Änderungen) auch ausgeführt, wenn der Cursor eine bestimmte Zeit stillsteht oder das Fenster wieder den Fokus erhält.
Mit dieser Konfiguration und einer in Neovim geöffneten Datei kann man beobachten, wie sich der Inhalt aktualisiert, während Claude Code im benachbarten Bereich Änderungen vornimmt.
Kopieren und Einfügen in Neovim
Wenn man auch bearbeiten möchte, muss man das Kopier- und Einfügesystem verstehen. In der Vim-Welt werden eigene Begriffe verwendet.
- Kopieren heißt Yanken (yank)
- Es gibt kein Konzept von Ausschneiden: Beim Löschen (delete) wird der Inhalt automatisch in ein Register gespeichert
Das bedeutet: „Löschen = Ausschneiden". Diese Denkweise umzustellen ist anfangs vielleicht die größte Hürde.
Grundlegende Bedienung (Normalmodus)
| Taste | Aktion |
|---|---|
yy | Aktuelle Zeile kopieren |
dd | Aktuelle Zeile ausschneiden (löschen und ins Register) |
x | Ein Zeichen löschen |
p | Hinter dem Cursor einfügen |
P | Vor dem Cursor einfügen |
Im visuellen Modus (Bereich mit v ausgewählt) kopiert y die Auswahl, d schneidet sie aus.
Verbindung mit der Mac-Zwischenablage
Das standardmäßige y und p wirkt nur auf Neovims internes Register. Um Kopieren und Einfügen mit anderen Mac-Apps zu ermöglichen, fügt man init.vim eine Zeile hinzu.
set clipboard=unnamedplus
Damit sind y / p / d direkt mit der Mac-Systemzwischenablage verbunden. Man kann in Neovim Yanktes mit Command+V in andere Apps einfügen und umgekehrt in anderen Apps Kopiertes mit p in Neovim einfügen.
Wenn man „nicht immer die Zwischenablage verbinden, sondern nur bei Bedarf" möchte, kann man "+y (in Systemzwischenablage yanken) oder "+p (aus Systemzwischenablage einfügen) für einzelne Operationen verwenden.
Mausbedienung konfigurieren
Neovim hat standardmäßig die Mausbedienung aktiviert (mouse=nvi). Wenn man in diesem Zustand mit der Maus zieht, wird das als visuelle Auswahl in Neovim behandelt, nicht als Terminal-Auswahl.
Drückt man dann Command+C, wird nichts kopiert, da auf der Terminal-Seite keine Auswahl existiert. Drückt man versehentlich c, interpretiert Neovim das als „change (Auswahl löschen und in den Einfügemodus wechseln)", wodurch die Auswahl verloren gehen kann.
Auch ich habe anfangs oft die Gewohnheit „Mausauswahl → Command+C" nicht ablegen können und dabei mehrfach Auswahlen verloren. Aber keine Sorge, man gewöhnt sich schnell daran. Falls es passiert, kehrt man mit Esc in den Normalmodus zurück und drückt u zum Rückgängigmachen (u ist Undo, Ctrl+r ist Redo - entspricht Command+Z / Command+Shift+Z auf dem Mac).
Es gibt drei Vorgehensweisen.
Empfehlung: Standardeinstellung beibehalten
Tatsächlich ist es am einfachsten, die Mauseinstellung bei mouse=nvi zu belassen und Kopieren und Einfügen auf Vim-Art (y / d / p) zu erledigen. Das ist auch die Arbeitsweise, bei der ich geblieben bin.
- Mit der Maus ziehen für visuelle Auswahl → einfach
ydrücken, und es landet in der Mac-Zwischenablage (dankclipboard=unnamedplus) - Cursor per Mausklick positionieren, sodass man auch beim Bearbeiten das Gefühl eines normalen Editors hat
Man ersetzt nur die Gewohnheit „Mausauswahl → Command+C" durch „Mausauswahl → y". Man muss sich nur y / d / p merken - sobald man sich daran gewöhnt hat, ist es sogar schneller.
Wenn man unbedingt Command+C verwenden möchte: Sondertaste + Ziehen
Wer „nicht auf Tastaturbedienung umsteigen möchte und Command+C beibehalten will", kann mit gedrückter Sondertaste ziehen, um eine Terminal-Auswahl zu erhalten und mit Command+C zu kopieren.
Die Sondertaste variiert je nach Terminal-App.
| Terminal | Methode zum Umgehen des Maus-Reportings |
|---|---|
| Ghostty | Shift+Ziehen |
| iTerm2 | Shift+Ziehen (Option+Ziehen für Rechteckauswahl) |
| Terminal.app | fn+Ziehen oder Shift+Ziehen (Option+Ziehen für Rechteckauswahl) |