21 Punkte von GN⁺ 15 일 전 | 1 Kommentare | Auf WhatsApp teilen
  • Über die Konfigurationsdatei ~/.tmux.conf lassen sich Tastenbelegungen, Farben, Statusleiste und Mausverhalten frei anpassen
  • Die Standard-Prefix-Taste C-b kann zu C-a geändert werden, und durch das Remapping von Caps Lock auf Ctrl lässt sich die Eingabe effizienter machen
  • Das Aufteilen von Fenstern kann statt mit ", % intuitiv mit den Tasten | und - erfolgen, und mit r lässt sich die Konfigurationsdatei sofort neu laden
  • Pane-Wechsel mit Alt + Pfeiltasten, aktivierter Mausmodus und das Deaktivieren der automatischen Umbenennung von Fenstern verbessern die Bedienbarkeit
  • Visuelle Elemente wie Farben, Statusleiste, Meldungen und Rahmen lassen sich fein abstimmen, um ein konsistentes Theme zu erstellen

Grundkonzepte der tmux-Anpassung

  • Die tmux-Konfigurationsdatei heißt tmux.conf; liegt sie im Home-Verzeichnis des Benutzers unter ~/.tmux.conf, wird sie als persönliche Konfiguration angewendet
    • Wenn mehrere Benutzer sie gemeinsam nutzen sollen, kann sie in einem systemweiten Verzeichnis liegen; der genaue Ort unterscheidet sich je nach Betriebssystem
    • Die genaue Position lässt sich in man tmux in der Beschreibung der Option -f nachsehen
  • Durch das Bearbeiten der Konfigurationsdatei lassen sich Tastenbelegungen, Farben, Statusleiste, Mausverhalten usw. frei ändern

Weniger unbequeme Prefix-Taste einrichten

  • Die Standard-Prefix-Taste C-b kann auf das leichter erreichbare C-a geändert werden
    • C-a kann mit dem bash-Befehl „zum Zeilenanfang springen“ kollidieren
    • Wenn die Caps-Lock-Taste auf Ctrl umgemappt wird, lassen sich Prefix-Kombinationen leichter eingeben
  • Ein Beispiel für die Konfiguration:
    unbind C-b
    set-option -g prefix C-a
    bind-key C-a send-prefix
    
  • Mit C-a C-a lässt sich der bisherige bash-Befehl weiterhin verwenden

Intuitive Befehle zum Aufteilen von Fenstern

  • Statt der Standard-Tasten " und % werden die visuell intuitiveren | und - verwendet
    • | wird für horizontales Splitten gesetzt, - für vertikales Splitten
    • Die bisherigen Tastenbelegungen werden aufgehoben
    bind | split-window -h
    bind - split-window -v
    unbind '"'
    unbind %
    

Konfigurationsdatei schnell neu laden

  • Wer tmux.conf häufig bearbeitet, kann sie per Tastenkürzel sofort neu laden
    • Der Taste r wird der Befehl zum erneuten Einlesen der Konfigurationsdatei zugewiesen
    bind r source-file ~/.tmux.conf
    

Schneller Pane-Wechsel

  • Mit Alt-(Meta-)Taste + Pfeiltasten kann man ohne Prefix zwischen Panes wechseln
    • Alt-Left, Alt-Right, Alt-Up und Alt-Down wechseln jeweils in diese Richtung
    bind -n M-Left select-pane -L
    bind -n M-Right select-pane -R
    bind -n M-Up select-pane -U
    bind -n M-Down select-pane -D
    

Mausmodus aktivieren

  • Fenster auswählen und Pane-Größen per Maus anpassen
    • Standardmäßig ist die Nutzung auf die Tastatur ausgerichtet, in der Zusammenarbeit ist die Maus aber nützlich
    • Besonders bei Pair Programming kann das häufig hilfreich sein
    set -g mouse on
    

Automatische Umbenennung von Fenstern deaktivieren

  • Verhindert, dass manuell vergebene Fensternamen beim Ausführen von Befehlen automatisch überschrieben werden
    set-option -g allow-rename off
    

Das Erscheinungsbild von tmux ändern

  • Farben, Statusleiste, Meldungen, Pane-Rahmen usw. lassen sich detailliert anpassen
    • Im Abschnitt STYLES finden sich Einstellungen für viele visuelle Elemente
    • Wenn man Standard-Terminalfarben (red, yellow, black usw.) verwendet, fügt sich das Theme natürlicher ein
    • Im 256-Farben-Modus können colour0 bis colour256 angegeben werden
  • Die Beispielkonfiguration enthält unter anderem:
    • Deaktivierte Glockenbenachrichtigung**,** Uhrfarbe yellow**,** Copy-Mode-Stil fg=black bg=red bold

    • Pane-Rahmenfarbe red**,** aktiver Pane-Rahmen yellow

    • Position der Statusleiste bottom**,** linker Leerraum**,** Uhrzeit rechts

    • Stil des aktuellen Fensters fg=black bg=red, Stil normaler Fenster fg=red bg=black

      • Meldungsstil fg=yellow bg=red bold
      • Diese Einstellungen sorgen für eine konsistente Farbgestaltung und klare visuelle Trennung

Weiterführende Materialien

  • Verschiedene Beispiele für tmux-Konfigurationen finden sich auf GitHub in Repositories zu tmux.conf oder dotfiles
    • Auch auf Reddit in /r/dotfiles und /r/unixporn gibt es Anregungen
  • Die vollständige Konfiguration ist im GitHub-dotfiles-Repository veröffentlicht
  • Für tieferes Lernen werden die man-Page von tmux und der Abschnitt Configuring tmux im tmux-Wiki empfohlen
    • Dort werden die neuesten Funktionen und alle Detailoptionen behandelt
  • Wer Terminal-Farbthemes selbst entwerfen möchte, kann Root Loops(https://rootloops.sh/) verwenden
    • Unterstützt individuell angepasste Terminal-Farbkonfigurationen

1 Kommentare

 
GN⁺ 15 일 전
Hacker-News-Kommentare
  • Ich hatte früher tmux benutzt, bin aber komplett zu Zellij gewechselt, seit ich es entdeckt habe
    Tabs und Panels lassen sich viel intuitiver konfigurieren, und Scrollen und Textauswahl mit der Maus machen Copy-and-Paste deutlich einfacher

    • Als ich mir die Zellij-Downloadseite angesehen habe, dachte ich, dass dort besser keine Buttons für Links verwendet werden sollten
      Button-Links lassen sich nicht per Rechtsklick kopieren und sind auch aus Sicht der Barrierefreiheit nicht ideal
    • Der einzige wirklich fatale Nachteil von Zellij ist, dass man auf dem Bildschirm nicht per Tastatur kopieren/einfügen kann und dass mehrere Clipboard-Puffer nicht unterstützt werden
      In tmux nutze ich diese Funktion alle 1–2 Minuten, aber die Zellij-Entwickler schlagen vor, die Daten an einen Editor zu pipen, was jedoch nicht mit der System-Zwischenablage kompatibel ist
      Deshalb bin ich am Ende wieder zu tmux zurückgekehrt
    • Aus Sicht von jemandem, der Embedded-Geräte nutzt, ist Zellij zu groß
      Zellij ist etwa 50 MB groß, während tmux selbst inklusive Abhängigkeitsbibliotheken nur ungefähr 2 MB braucht — der Größenunterschied ist erheblich
    • Ich habe in den letzten zwei Wochen zmx ausprobiert; es gibt ein paar Screen-Repaint-Bugs, aber zusammen mit ghostty ist es ziemlich angenehm zu benutzen
    • Ich bin auch erst zu Zellij gewechselt und dann wieder zu tmux zurück
      Zellij wurde mit der Zeit immer aufgeblähter, was mich gestört hat, und inzwischen bin ich mit tmuxp für die Sitzungsverwaltung und autossh für die Verbindungsstabilität viel zufriedener
  • Was Keybindings angeht: ^a ist die Tradition bei screen, ^b die bei tmux
    Wenn man Administrator ist und viele Systeme betreut, ist es wichtig, die Standard-Keymaps zu beherrschen
    Ich habe in meinen persönlichen Einstellungen nur Farben, den Hintergrund des aktiven Panels, die Uhr mit Zeitstempel und die Mausaktivierung geändert und die Keybindings unverändert gelassen
    Wenn man sich einmal daran gewöhnt hat, sind die Standardwerte sogar bequemer

  • Ich hatte tmux aufgegeben und war zu Zellij gewechselt, weil Shift+Enter nicht funktionierte
    Aber dann hat Zellij wegen eines Panic-Crashs Prozesse abgeschossen, sodass ich am Ende zu tmux zurückgekehrt bin
    Die Lösung war "bind-key -T root S-Enter send-keys C-j", gefunden in diesem Issue

    • Ich habe es mit "bind -n S-Enter send-keys Escape '[13;2u'" gelöst
      pi.dev warnt zwar, dass keine extended-keys-Einstellung gesetzt sei, aber es funktioniert trotzdem
    • Dadurch habe ich endlich die Lösung gefunden, nach der ich gesucht hatte
    • Ich frage mich, ob es möglich ist, dass der Multiplexer abstürzt, die Kindprozesse aber weiterlaufen
      Bei tmux war es praktisch, dass beim Beenden des Servers auch die untergeordneten Prozesse aufgeräumt wurden
    • Bei mir funktioniert Shift+Enter nicht, aber Option+Enter fügt eine neue Zeile ein (MacOS, Claude Code)
    • Wenn man neue Bindings vermeiden will, geht auch die Kombination \ + Enter
  • Als ich erst einmal vom Control Mode von tmux erfahren hatte, war das ein absoluter Gamechanger
    Wenn man tmux -CC in iTerm2 ausführt, funktionieren Tabs, Scrollen, Copy-and-Paste, Shortcuts usw. nativ im Terminal
    Die Tabs sind auch visuell vollständig sichtbar, was besonders für Einsteiger nützlich ist

    • Wegen dieser Funktion benutze ich einen Mac. In zehn Jahren Linux-Terminals habe ich nichts gesehen, das das umgesetzt hätte
    • Bei mir funktioniert der -CC-Modus ebenfalls perfekt
    • Ich frage mich, ob das auch in ghostty funktioniert
    • Jetzt verstehe ich endlich, was -CC eigentlich macht
    • Einfach nur wow
  • In tmux nutze ich Alt+Zahl für einen schnellen Fensterwechsel
    Zum Beispiel mit bind-key -n M-1 select-window -t :1
    Mit Alt-/ kann man auch den Copy-Modus im vi-Stil öffnen
    Unter Wayland kann man mit wl-copy per Mausziehen oder mit der Taste y kopieren
    Ich habe auch ein Design im Powerline-Stil hinzugefügt, dafür braucht man powerline-fonts

  • Ich habe tmux so stark angepasst, dass ich bei einer SSH-Verbindung auf einen neuen Server die Standardbedienung vergesse
    Inzwischen verwende ich wieder die Standardkonfiguration. Nur die Maus-Scroll-Einstellung ändere ich jedes Mal

    • Es wurde gefragt, ob man ein Dotfiles-Repository anlegt, um Konfigurationen für tmux, zsh usw. zu verwalten
    • Das ist ähnlich wie der Fluch von Emacs. Man kann endlos anpassen, aber am Ende entsteht eine ganz eigene, sonderbare Umgebung
      Ein verwandtes Konzept ist The Lisp Curse
    • Ich hatte dasselbe Problem und habe es gelöst, indem ich die Standardkonfiguration nicht überschrieben, sondern nur nicht kollidierende Ergänzungen hinzugefügt habe
      Zum Beispiel habe ich Ctrl-b beibehalten und Ctrl-Space als zusätzlichen Shortcut ergänzt
    • Mit Emacs hatte ich dieselbe Erfahrung. Nachdem meine Festplatte kaputtgegangen war und ich meine benutzerdefinierte Konfiguration verloren hatte, bin ich fast komplett zum Standard zurückgekehrt
    • Es gibt schon Witze wie: „Claude, kopiere bitte meine tmux-Konfiguration per scp auf diesen Server“
  • Ich war von tmux’ Control Mode in iTerm2 beeindruckt
    Damit kann man als lokaler Fenstermanager Remote-Terminalfenster steuern
    Auch in ghostty wird an einer Implementierung dieser Funktion gearbeitet, worauf ich mich freue

  • Viele finden die Standard-Prefix-Taste von tmux (C-b) unhandlich, aber ich sehe gerade in dieser Unbequemlichkeit einen Vorteil
    Man drückt sie fast nie versehentlich
    Auch die Befehle zum Aufteilen wirken auf mich intuitiv — % fühlt sich wie eine horizontale Linie an, " wie eine vertikale
    Die Konfiguration habe ich nur am Anfang häufig neu geladen, inzwischen fast nie mehr

    • Ich mag die Standard-Prefix-Taste auch
      Falls nötig, kann man in .tmux.conf einfach Folgendes ergänzen:
      unbind-key -T prefix C-b
      set-option -g prefix C-s
      
      Wenn man nur lokal arbeitet, muss man sich über Konflikte keine Sorgen machen
  • Ich liebe tmux, aber der Haken ist, dass man dafür eine 400 Zeilen lange Konfigurationsdatei zu brauchen scheint
    Im Auslieferungszustand ist es nicht besonders benutzerfreundlich, aber wenn man viel daran feilt, wird es wirklich großartig
    Man kann sich an meiner Konfigurationsdatei orientieren

    • Ich habe gar nichts angepasst und finde es trotzdem gut benutzbar
      Ich musste mir nur etwa neun Shortcuts merken
    • Ich habe meine Konfigurationsdatei so bereitgestellt, dass man sie von überall bequem mit wget oder curl herunterladen kann
      Eine PowerShell-Version will ich ebenfalls noch hinzufügen
    • Ich habe mir jcs’ Konfiguration angesehen und nur ein paar Zeilen daraus übernommen
      Nur das Prefix-Binding habe ich wieder auf den Originalzustand zurückgesetzt
  • Vor einiger Zeit habe ich an einem Wochenende das Buch „tmux 2: mouse-free productivity“ gelesen, und es war eines der Bücher mit dem größten Einfluss auf meine Produktivität
    Die aktuelle Ausgabe wird auch weiterhin gepflegt → tmux 3: productive mouse-free development

    • Schade nur, dass das Buch den ursprünglichen Autor oder die Herkunft von tmux nicht erwähnt
    • Danke für den Hinweis auf diese gute Referenz