tmux

Ich konnte es nun doch nicht bleiben lassen und hab mir kurz tmux angeschaut. Also Splitting ist wesentlich simpler als in screen (unter Screen finde ich das ganze eigentlich doch noch recht umständlich…aber intensiv angeschaut hab ich’s auch nicht mit screen, um ehrlich zu sein…).

Ich bin ja kompletter tmux/screen Anfänger, aber ich denke, dass es meinen Workflow ziemlich beeinträchtigen wird in Zukunft.

eine neue Session starten:

auch hier ist der Sessionname nicht zwingend, es reicht auch nur die einfach die Eingabe von tmux, um eine Session zu starten

vorhandene Sessions auflisten

auf vorhandene Session verbinden

Wenn nur eine Session läuft, reicht tmux a (oder tmux at oder tmux attach)

Bei mehreren Sessions kann mit -t den Sessionnamen mitgeben

andere Shortcuts

C-b c neues Sessionfenster

C-b [Fensternummer] Fensterwechsel

C-b d tmux “aushängen” (reattach mit screen a)

C-b , Fenstertitel umbenennen

C-b ‘ Fensterwechsel durch Eingabe des Titels / Fensternummer

C-b w Fensterliste anzeigen (sehr geil; mit Preview!)

C-b % horizontal splitten

C-b “ vertikal splitten

C-b [Pfeiltasten] zwischen gesplitteten Fenstern wechselt man einfach mit den Pfeiltasten, ziemlich logisch (mit aktiver Maus kann natürlich auch diese verwendet werden)

C-b q Pane Nummern / IDs anzeigen (oder tmux list-panes [-a])

C-b o durch Panes “switchen”

C-b ? Hilfe anzeigen

C-b x aktuelles Fenster schliessen

C-b :kill-session Alle Fenster schliessen und tmux beenden

Statusbar

Und mit echo $TERM findet man raus, ob man sich gerade in einer tmux-Session befindet oder nicht. Falls schon, sieht man es in der Ausgabe mit “screen…”, also identisch mit screen. Jedoch kommt tmux bereits von Beginn mit einer Statusbar daher (zumindest bei mir), also sieht man’s eigentlich auf Anhieb.

Was mir jedenfalls aufgefallen ist: lieber eine schlichte, einfache Statusbar – bei einer ssh Session kanns sonst mitunter etwas zäh sein, wenn unten immer wieder was blinkt und aufleuchtet (zb. Activity Monitor, etc). Sobald ich die angepasst hab (was mir dann zudem auch optisch besser gefallen hat), war tmux via ssh schon wesentlich bequemer/flüssiger zu bedienen.

Powerline

Weil Powerline derzeit grad so schick ist; unter Debian kann man das Package tmux-themepack-jimeh installieren (ab Testing) und dann eines der verschiedenen Themen in tmux sourcen

Braucht man nicht zwingend das Package, das kann man auch unter Stable einfach klonen und so verwenden. Naja, ich verwende es zwar nicht, denke aber, dass viele das wollen, weil eben grad ‘in’…

Colors

ohne grosse Konfiguration gab’s bei mir schnell Fehler, bspw., wenn ich mutt mit meinem Farbschema gestartet hab (Terminal hat zuwenig Farben). Dies muss man tmux in der Config mitteilen:

Auf die config geh ich jetzt aber nicht weiter ein, da findet man hunderte Beispiele auf Github…

Panes resizen

Mit aktiver Maus können die Panes wie erwartet angepasst werden. Ansonsten kann man in den Eingabemodus wechseln und via command Anpassungen tätigen.

C-b : in den Eingabemodus wechseln

Panes verschieben

Manchmal möchte man ja auch Panes “verschieben”. Kein Problem:

C-b C o : Panes swappen
C-b Alt o : Panes swappen (wenn mehr als zwei Panes offen sind)

Das ganze geht aber auch mit C-b { bzw C-b }, was ja bequemer ist, da eine Taste weniger

Was jedoch auch sehr angenehm und cool ist:

C-b [Space] : mit der Leertaste kann man automatisch zwischen verschiedenen Layouts “toggeln”

kompletten Platz ausnutzen

Wenn ich bspw. mit dem Laptop auf eine Session am Desktop verbinde, ist natürlich das Verhältnis nicht identisch. Je nachdem werden dann Bereiche “ausgespart”:

Um dies zu unterbinden trennt man am besten alle anderen Connections, wenn man sich verbindet.

Natürlich kann man auch einfach attachen, dann muss man jedoch mit halt mit dem ungenutzen Platz “leben”. Eine andere Variante (hab ich aber selber nicht getestet): C-b Shift-D, um andere Sessions zu trennen. Anscheinend listet dann tmux alle Sessions und man kann auswählen, was man detachen will.

Copy/Paste

den Copymodus in tmux hab ich noch nicht wirklich geschnallt. Sofern jedoch die Maus aktiviert ist, kann man die Shift-Taste gedrückt halten und mit der linken Maustaste den Text markieren. Somit ist es bereits kopiert. Einfügen kann man mit gedrückter Shift-Taste und der mittleren Maustaste.

Keyboard only

Aber natürlich möchte ich so oft wie möglich auf die Maus verzichten. Das ist auch nicht weiter schwierig:

C-b [: in den Kopiermodus wechseln
Space: gewünschten Text mit der Leertaste markieren
Enter: Auswahl kopieren

Ganz cool ist es, wenn man den vi-mode aktiviert hat (setw -g mode-keys vi). Damit werden h,j,k,l zum navigieren aktiviert. Auch sonst sehr angenehm, da man sehr viele vim-Shortcuts anwenden kann…

vi-copy-Funktionen

wie man sieht, eigentlich viel bekanntes von vim her… damit kann man recht effizient Text kopieren

Zurück zu Einrückung ^
Auswahl löschen Escape
Auswahl kopieren Enter
Cursor nach unten j
Cursor links h
Cursor rechts l
Cursor nach unten L
Cursor zur Mitte M
Cursor nach oben H
Cursor up k
ganze Zeile löschen d
Ende der Zeile löschen D
Beginn der Zeile 0
Ende der Zeile $
gehe zu Zeile :
halbe Seite nach unten C-d
halbe Seite nach oben C-u
nächste Seite C-f
nächstes Wort w
Buffer einfügen p
vorherige Seite C-b
vorheriges Wort b
Quit Mode q
Scroll down C-Down oder J
Scroll up C-Up oder K
erneut suchen n
rückwärts suchen ?
vorwärts suchen /
Auswahl starten Space

Den kopierten Text kann man mittels C-b ] einfügen. Hier ist jedoch zu beachten, dass der kopierte Text nur innerhalb von tmux nutzbar ist. Um dies generell nutzen zu können, wäre glaub ich das Plugin tmux-yank nutzbar, kann aber nichts dazu sagen, da ich’s bisher noch nicht getestet hab.

Plugins

Es scheint, dass es recht viele Plugins (und auch einen entsprechenden Plugin Manager) für tmux gibt, jedoch bin ich noch nicht soweit 😉