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-clipboardOption deaktiviert ist:
set-option -s set-clipboard off
Diese Option wird auf iTerm2 möglicherweise standardmäßig unterstützt und aktiviert (siehe set-clipboardim 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-pipevor 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"