Bei tmux handelt es sich um einen Terminal-Multiplexer, ähnlich wie screen, mit dem innerhalb eines Terminalfensters verschiedene virtuelle Terminalsitzungen erzeugt und verwaltet werden können. Dabei ist es möglich, die Verbindung zu Sitzungen zu trennen (“detach”) und wieder aufzunehmen (“attach”). tmux arbeitet in einer Server-Client Struktur und erlaubt farbliche Darstellung mittels ncurses, horizontales und vertikales aufteilen des Fensters, ist über die tmux.conf oder zur Laufzeit anpassbar, lässt sich über Skripte steuern und vieles mehr.
Um in einer tmux-Session etwas zu kopieren, muss in den Kopieren-Modus gewechselt werden. Im Folgenden gehe ich von den vi Keybindings aus, die beispielsweise über die .tmux.conf mit
set-window-option -g mode-keys vi
gesetzt werden, oder innerhalb von tmux dynamisch mit dem selben Befehl. Als Präfix für tmux gehe ich hier vom Standard Strg+B aus, was entsprechend der eigenen Konfiguration angepasst werden muss.
Der in den Buffer kopierte Text kann innerhalb von tmux nach einem Strg+B mit dem Befehl :show-buffer angezeigt werden. Enter beendet die Anzeige. Der Buffer kann auch direkt in eine Datei gespeichert werden. Dazu wird wieder mit Strg+B in den Kontrollmodus gewechselt und mit
:save-buffer file.txt
wird der Buffer abgespeichert.
Alternativ kann der in den Buffer kopierte Text auch auch außerhalb der tmux-Session verwendet werden. Verlässt man tmux mit beispielsweise Strg+B und D, kann mit einem tmux show-buffer der kopierte Text im Terminal angezeigt werden. Er kann aber auch mit
tmux save-buffer file.txt
direkt, wie in tmux selbst, in eine Datei gespeichert werden.
In tmux können mehrere Buffer verwendet werden, nicht nur der aktuelle wie oben erwähnt. Innerhalb von tmux können die Buffer nach einem Wechsel von Strg+B in den Kontrollmodus mit # angezeigt werden, die Kurzform von :list-buffers. Mit Enter wird die Anzeige verlassen. Einen bestimmten Buffer kann man sich mit :show-buffer -b <buffer_name> anzeigen lassen, wobei der Name vor dem jeweiligen Buffer-Inhalt vor dem Doppelpunkt steht. Mit :save-buffer -b <buffer_name> file.txt nach dem Wechsel mit Strg+B kann ein bestimmter Buffer abgespeichert werden. Löschen kann man sie mit :delete-buffer -b <buffer_name> oder alternativ statt des Namens die Nummer des Buffers, beginnend mit 1 für den ersten Buffer: :delete-buffer -b 1.
Die Befehle funktionieren auch außerhalb der tmux-Session, so können beispielsweise mit tmux show-buffers alle Buffer im Terminal angezeigt werden. Ein spezieller Buffer kann sich so auch gezielt mit
tmux save-buffer -b <buffer_name> file.txt
in einer Datei speichern lassen.
Eine einfache Variante, einen bestimmten Buffer als aktuellen auszuwählen, ist es, innerhalb von tmux nach Strg+B mit dem Befehl :choose-buffer eine Liste aller Buffer zu öffnen. So wird im oberen Teil des tmux-Fensters eine mit Pfeiltasten navigierbare Liste aller Buffer angezeigt. Im unteren Fensterteil wird dabei jeweils der Name des Buffers mit dem Inhalt darunter angezeigt. So kann mit Enter ein bestimmter Buffer ausgewählt werden und mit den zuvor erwähnten Befehlen beispielsweise eingefügt oder abgespeichert werden.