Tmux 2.4+ z powiązaniami trybu kopiowania vi i 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"
W przypadku starszych wersji tmux, powiązań trybu kopiowania emacsa (domyślnie) lub platform innych niż X (tj. Bez xclip), zobacz wyjaśnienie poniżej.
Objaśnienie: Najpierw musimy włączyć opcję myszy, aby tmux przechwycił mysz i pozwolił nam powiązać zdarzenia myszy:
set-option -g mouse on
Gnome-terminal nie obsługuje ustawiania schowka przy użyciu sekwencji specjalnych xterm, więc powinniśmy upewnić się, że set-clipboard
opcja jest wyłączona:
set-option -s set-clipboard off
Ta opcja może być obsługiwana i domyślnie włączona w iTerm2 (patrz set-clipboard
instrukcja tmux), co wyjaśniałoby zachowanie się na niej.
Następnie możemy powiązać MouseDragEnd1Pane
„klucz” trybu kopiowania , tzn. Gdy pierwszy przycisk myszy zostanie zwolniony po kliknięciu i przeciągnięciu w okienku, do polecenia tmux, które pobiera bieżący wybór trybu kopiowania (domyślnie ustawiony dla MouseDrag1Pane
) i przesyła potoki do polecenia powłoki. Ta komenda tmux była copy-pipe
wcześniejsza niż tmux 2.4 i od tego czasu zmieniła się na send-keys -X copy-pipe[-and-cancel]
. Jeśli chodzi o polecenie powłoki, po prostu potrzebujemy czegoś, co ustawi zawartość schowka systemowego na cokolwiek, co jest do niego przesyłane; xclip służy do tego w następujących poleceniach. Niektóre równoważne zamienniki "xclip -selection clipboard -i"
poniżej na platformach innych niż X to "wl-copy"
(Wayland), "pbcopy"
(macOS), "clip.exe"
(Windows, WSL) i "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 od 2.2 do 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"
Przed tmux 2.2:
Kopiuj po tym, jak pierwotnie dodano obsługę przeciągania myszą w Tmux 1.3 poprzez ustawienie nowej mode-mouse
opcji na on
. Tmux 2.1 zmienił obsługę myszy na znane powiązania klawiszy myszy, ale nie miał DragEnd
powiązań, które zostały wprowadzone w 2.2. Dlatego przed wersją 2.2 uważam, że jedyną metodą ustawienia schowka systemowego na przeciąganie myszą było wbudowane użycie sekwencji ucieczki xterm ( set-clipboard
opcja). Oznacza to, że konieczna jest aktualizacja do wersji co najmniej tmux 2.2, aby uzyskać zachowanie przeciągania i kopiowania dla terminali, które nie obsługują set-clipboard
, takich jak GNOME Terminal.
xclip...
oświadczenie z prostympbcopy
robi sztuczka.Unknown key: MouseDragEnd1Pane
DragEnd
kluczy.Jako rozszerzenie przyjętej odpowiedzi, ludzie często uważają to za niepokojące po zwolnieniu przycisku myszy z trybu kopiowania (tak się dzieje
copy-pipe-and-cancel
). Zobacz: https://github.com/tmux/tmux/issues/140 . Dlatego w nowszym tmuxie (używam 2.6) możemy używaćcopy-pipe
razem z,clear selection
aby skopiować do zaznaczenia, ale nie wychodź z trybu kopiowania:źródło
Rozszerzając obie odpowiedzi do skopiowania z msys2 do schowka Windows (i wyczyść zaznaczenie):
źródło
Jeszcze inne rozszerzenie dotyczy używania
Shift
klucza.Przytrzymaj
Shift
podczas zaznaczania tekstu za pomocą myszy. Teraz masz standardowe menu kliknięcia prawym przyciskiem myszy (przytrzymuj lub naciśnijShift
ponownie) i możesz używaćCtrl+Shift+C
orazCtrl+Shift+V
do kopiowania i wklejania. Skopiowany tekst będzie również dostępny w schowku systemowym .Testowane na
Ubuntu 18.04.1
ztmux 2.6
.Źródło: https://forum.upcase.com/t/tmux-ctrl-shift-c-and-ctrl-shift-v-bindings/1208 .
źródło