Jak kopiować i wklejać myszą za pomocą tmux


44

Używam tmuxi OSX. Podczas kopiowania i wklejania z terminala tmuxmogę przytrzymać Optioni zaznaczyć tekst. Nie mogę jednak zmusić tekstu do pozostania w okienku. Więc kiedy chcę skopiować tekst, muszę przesunąć panel w lewo lub powiększyć panel, jak pokazano poniżej.

To oprócz konieczności przytrzymywania Optionklawisza jest uciążliwe. Wiem, że mogę wejść w tryb wizualny i użyć ruchów vima, aby się tam dostać, ale wolę mieć sposób na użycie myszy. Czy ktoś znalazł rozwiązanie tego problemu?

wprowadź opis zdjęcia tutaj wprowadź opis zdjęcia tutaj


„Jednak nie mogę zmusić tekstu do pozostania w okienku.” Co przez to rozumiesz?
Blaszard

Odpowiedzi:


36

Umieść ten blok kodu w swoim ~/.tmux.conf. Umożliwi to integrację myszy, umożliwiając kopiowanie z panelu za pomocą myszy, bez konieczności powiększania.

set -g mouse on
bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'select-pane -t=; copy-mode -e; send-keys -M'"
bind -n WheelDownPane select-pane -t= \; send-keys -M
bind -n C-WheelUpPane select-pane -t= \; copy-mode -e \; send-keys -M
bind -t vi-copy    C-WheelUpPane   halfpage-up
bind -t vi-copy    C-WheelDownPane halfpage-down
bind -t emacs-copy C-WheelUpPane   halfpage-up
bind -t emacs-copy C-WheelDownPane halfpage-down

# To copy, drag to highlight text in yellow, press Enter and then release mouse
# Use vim keybindings in copy mode
setw -g mode-keys vi
# Update default binding of `Enter` to also use copy-pipe
unbind -t vi-copy Enter
bind-key -t vi-copy Enter copy-pipe "pbcopy"

Następnie zrestartuj sesję tmux. Podświetl tekst za pomocą myszy, ale nie puszczaj myszy. Teraz, gdy tekst jest podświetlony i wciśnięty myszą, naciśnij klawisz powrotu. Podświetlony tekst zniknie i zostanie skopiowany do schowka. Teraz puść mysz.

Oprócz tego za pomocą myszy można też robić fajne rzeczy, takie jak przewijanie w górę i w dół, wybieranie aktywnego panelu itp.

Jeśli używasz nowszej wersji tmux na macOS, spróbuj wykonać następujące czynności zamiast powyższej:

# macOS only
set -g mouse on
bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'select-pane -t=; copy-mode -e; send-keys -M'"
bind -n WheelDownPane select-pane -t= \; send-keys -M
bind -n C-WheelUpPane select-pane -t= \; copy-mode -e \; send-keys -M
bind -T copy-mode-vi    C-WheelUpPane   send-keys -X halfpage-up
bind -T copy-mode-vi    C-WheelDownPane send-keys -X halfpage-down
bind -T copy-mode-emacs C-WheelUpPane   send-keys -X halfpage-up
bind -T copy-mode-emacs C-WheelDownPane send-keys -X halfpage-down

# To copy, left click and drag to highlight text in yellow, 
# once you release left click yellow text will disappear and will automatically be available in clibboard
# # Use vim keybindings in copy mode
setw -g mode-keys vi
# Update default binding of `Enter` to also use copy-pipe
unbind -T copy-mode-vi Enter
bind-key -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel "pbcopy"
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "pbcopy"

Jeśli używasz iTerm na macOS, przejdź do iTerm2> Preferencje> zakładka „Ogólne”, aw sekcji „Wybór” zaznacz „Aplikacje w terminalu mogą uzyskać dostęp do schowka”.

A jeśli używasz Linuksa i nowszej wersji tmux, to

# Linux only
set -g mouse on
bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'select-pane -t=; copy-mode -e; send-keys -M'"
bind -n WheelDownPane select-pane -t= \; send-keys -M
bind -n C-WheelUpPane select-pane -t= \; copy-mode -e \; send-keys -M
bind -T copy-mode-vi    C-WheelUpPane   send-keys -X halfpage-up
bind -T copy-mode-vi    C-WheelDownPane send-keys -X halfpage-down
bind -T copy-mode-emacs C-WheelUpPane   send-keys -X halfpage-up
bind -T copy-mode-emacs C-WheelDownPane send-keys -X halfpage-down

# To copy, left click and drag to highlight text in yellow, 
# once you release left click yellow text will disappear and will automatically be available in clibboard
# # Use vim keybindings in copy mode
setw -g mode-keys vi
# Update default binding of `Enter` to also use copy-pipe
unbind -T copy-mode-vi Enter
bind-key -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel "xclip -selection c"
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "xclip -in -selection clipboard"

(Możesz również sprawdzić https://github.com/gpakosz/.tmux, aby uzyskać wiele innych opcji tmux.)


1
Wreszcie coś, co faktycznie działa! Kopiowanie i wklejanie jest najbardziej denerwującą rzeczą przy próbowaniu tmuxa, zrezygnowałem z niego już wcześniej, a fragmenty konfiguracji, które wypróbowałem, zachowywały się niekonsekwentnie, dziękuję bardzo człowieku.
Breno Salgado

1
Korzystałem z iterm w Macu i musiałem włączyć iTerm2> Preferencje> zakładkę „Ogólne”, aw sekcji „Wybór” „Aplikacje w terminalu mogą uzyskać dostęp do schowka”. Odniesienie: rushiagr.com/blog/2016/06/16/…
Rujoota Shah

@RujootaShah Tak, zgadza się. Musisz to zrobić. Dzięki za udostępnienie.
GMaster

1
Dzięki! Działa jak marzenie. Musiałem jednak zainstalować sudo apt-get install -y xclip(Ubuntu Linux).
Petr

działa idealnie, dzięki @GMaster
Shrestha
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.