Tmux 2.4+ con collegamenti in modalità copia vi e xclip :
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"
Per le versioni precedenti di tmux, i collegamenti alla modalità di copia di emacs (impostazione predefinita) o le piattaforme non X (ovvero, senza xclip), vedere la spiegazione di seguito.
Spiegazione: Per prima cosa dobbiamo abilitare l'opzione mouse in modo che tmux acquisisca il mouse e ci permetta di associare gli eventi del mouse:
set-option -g mouse on
Gnome-terminal non supporta l'impostazione degli appunti usando sequenze di escape xterm, quindi dovremmo assicurarci che l' set-clipboard
opzione sia disattivata:
set-option -s set-clipboard off
Questa opzione potrebbe essere supportata e abilitata per impostazione predefinita su iTerm2 (vedi set-clipboard
nel manuale di tmux), il che spiegherebbe il comportamento lì.
Possiamo quindi associare il MouseDragEnd1Pane
"tasto" della modalità di copia , ovvero quando il primo pulsante del mouse viene rilasciato dopo aver fatto clic e trascinato in un riquadro, a un comando tmux che accetta la selezione della modalità di copia corrente (effettuata dall'associazione predefinita per MouseDrag1Pane
) e la pipe a un comando shell. Questo comando tmux era copy-pipe
precedente a tmux 2.4 e da allora è cambiato in send-keys -X copy-pipe[-and-cancel]
. Per quanto riguarda il comando shell, abbiamo semplicemente bisogno di qualcosa che imposterà il contenuto degli Appunti di sistema su qualsiasi cosa venga convogliata ad esso; xclip è usato per fare questo nei seguenti comandi. Alcuni sostituti equivalenti per "xclip -selection clipboard -i"
le piattaforme non X di seguito sono "wl-copy"
(Wayland), "pbcopy"
(macOS), "clip.exe"
(Windows, WSL) e "cat /dev/clipboard"
(Cygwin, MinGW).
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"
Tmux da 2.2 a 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"
Prima di tmux 2.2:
Copia dopo il supporto del trascinamento del mouse è stato originariamente aggiunto in Tmux 1.3 impostando la nuova mode-mouse
opzione su on
. Tmux 2.1 ha cambiato il supporto del mouse con le associazioni dei tasti del mouse familiari, ma non aveva DragEnd
associazioni, che sono state introdotte in 2.2. Quindi, prima della 2.2, credo che l'unico metodo per impostare gli appunti di sistema sul trascinamento del mouse fosse attraverso l'uso incorporato delle sequenze di escape xterm (l' set-clipboard
opzione). Ciò significa che è necessario aggiornare almeno a tmux 2.2 per ottenere il comportamento di trascinamento della copia per i terminali che non supportano set-clipboard
, come GNOME Terminal.