tmux mit Zwischenablage und Plugins
Mit tmux
1 verbindet mich eine jahrelange Hassliebe. Auf der einen Seite ist tmux
wirklich ein schweizer Taschenmesser und kann tolle Dinge, auf der anderen Seite finde ich das tmux
-Ökosystem schwer durchschaubar und die Vielzahl von Tastenkombinationen und Konfigurationseinstellungen tut ihr übriges. Am meisten hat mich aber immer das Copy & Paste Verhalten gestört.
Aber wie so oft muss man halt einmal tief tauchen und dann lichtet sich der Dschungel auch schon.
tmux
selbst kann natürlich einfach mit apt install tmux
installiert und mit tmux
gestartet werden. Und es ist auch so schon ein guter Ersatz für screen
und andere Anwendungen. Aber wirklich schön wird tmux
erst mit Plugins2 (und Powerline3, dazu aber irgendwann einmal mehr).
Für die Installation und Verwaltung von Plugins bietet sich der tmux plugin manager
(tpm)4 an. Um die gewünschten Plugins einzubinden, trägt man diese einfach in ~/.tmux.conf
ein:
# Install plugins
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'tmux-plugins/tmux-pain-control'
set -g @plugin 'tmux-plugins/tmux-copycat'
set -g @plugin 'tmux-plugins/tmux-yank'
set -g @plugin 'tmux-plugins/tmux-open'
set -g @plugin 'tmux-plugins/tmux-urlview'
set -g @plugin 'tmux-plugins/tmux-logging'
set -g @plugin 'tmux-plugins/tmux-prefix-highlight'
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'jaclu/tmux-menus'
set -g @plugin 'erikw/tmux-powerline'
set -g @plugin 'MunifTanjim/tmux-mode-indicator'
set -g @plugin 'MunifTanjim/tmux-suspend'
Eventuell muss man bei der Reihenfolge der Plugins ein wenig aufpassen, entsprechende Hinweise finden sich dann aber meist in den README-Dateien zu den jeweiligen Plugins. Nach jeder Änderung an der .tmux.conf
muss diese entweder mittels source .tmux.conf
neu eingelesen oder der tmux-Server mittels tmux kill-server
beendet und danach neu gestartet werden.
Die Installation der Plugins kann dann mittels /usr/share/tmux-plugin-manager/bin/install_plugins all
oder die Tastenkombination Strg + b
gefolgt von Umschalt + i
erfolgen. Wer gerne einen anderen Auslöser als Strg + b
nutzen möchte, kann folgendes in die .tmux.conf
eintragen:
# remap prefix from 'C-b' to 'C-y'
unbind C-b
set-option -g prefix C-y
bind-key C-y send-prefix
Das große C
steht dabei für Strg
bzw. Ctrl
.
Um die Arbeit mit tmux möglichst angenehm zu gestalten kann auch noch die Kontrolle mittels Maus aktiviert werden:
set -g mouse on
Nun können verschiedene Elemente der tmux Oberfläche mit der Maus bedient werden. Außerdem ist es möglich Text mittels Maus zu markieren. Allerdings funktioniert das Kopieren unter tmux anders. Um das normale Copy & Paste Verhalten zu nutzen, kann man während man den Text mit der Maus markiert Umschalt
gedrückt halten. Dies kollidiert jedoch mit einem anderen tmux Feature. Man kann in tmux nämlich sog. Panes
5 nutzen. Hierzu betätigt man zunächst die prefix
Tastenkombination und dann Umschalt + "
bzw. Umschalt + %
um die tmux Oberfläche entweder horizontal oder vertikal immer weiter zu unterteilen. Hat man nun zwei Panes nebeneinander und nutzt die Markierfunktion mit der Maus und Umschalt
wird der Text über Panegrenzen hinweg markiert, was in den seltensten Fällen gewünscht sein dürfte.
Mit dem Plugin yank
sowie folgenden Zeilen in der .tmux.conf
kann man dies jedoch beheben:
# Fix copy
set -g @yank_action 'copy-pipe-no-clear'
bind -T copy-mode C-c send -X copy-pipe-no-clear "xsel -i --clipboard"
bind -T copy-mode-vi C-c send -X copy-pipe-no-clear "xsel -i --clipboard"
Markiert man nun einen Text wie gewohnt mit der Maus (ohne Umschalt-Taste), wird dieser innerhalb von Panegrenzen markiert. Mit Strg + C
kann er kopiert werden. Mit ESC
kann man den Copy-Modus wieder verlassen.