Tmux 2.4+:
set-option -g mouse on
set-option -s set-clipboard off
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "xclip -se c -i"
Vor tmux 2.4:
set-option -g mouse on
set-option -s set-clipboard off
bind-key -t vi-copy MouseDragEnd1Pane copy-pipe "xclip -se c -i"
Erläuterung: Zuerst müssen wir die Mausoption aktivieren, damit tmux die Maus erfasst und uns Mausereignisse binden lässt:
set-option -g mouse on
Gnome-Terminal unterstützt das Einstellen der Zwischenablage mithilfe von xterm-Escape-Sequenzen nicht, daher sollten wir sicherstellen, dass die set-clipboard
Option deaktiviert ist:
set-option -s set-clipboard off
Diese Option wird auf iTerm2 möglicherweise standardmäßig unterstützt und aktiviert (siehe set-clipboard
im tmux-Handbuch), was das Verhalten dort erklären würde.
Wir können dann den Kopiermodus MouseDragEnd1Pane
"key", dh wenn die erste Maustaste nach dem Klicken und Ziehen in einem Bereich losgelassen wird, an einen tmux-Befehl binden, der die aktuelle Auswahl des Kopiermodus (die durch die Standardbindung für vorgenommen wurde MouseDrag1Pane
) übernimmt und diese per Pipeline weiterleitet zu einem Shell-Befehl. Dieser tmux Befehl war copy-pipe
vor tmux 2,4, und hat sich seitdem geändert zu send-keys -X copy-pipe[-and-cancel]
. Was den Shell-Befehl betrifft, brauchen wir einfach etwas, das den Inhalt der System-Zwischenablage auf das setzt, was auch immer dazu geleitet wird. In den folgenden Befehlen wird dazu xclip verwendet.
Tmux 2.4+:
# For vi copy mode bindings
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "xclip -selection clipboard -i"
# For emacs copy mode bindings
bind-key -T copy-mode MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "xclip -selection clipboard -i"
Vor tmux 2.4:
# For vi copy mode bindings
bind-key -t vi-copy MouseDragEnd1Pane copy-pipe "xclip -selection clipboard -i"
# For emacs copy mode bindings
bind-key -t emacs-copy MouseDragEnd1Pane copy-pipe "xclip -selection clipboard -i"