Come copiare e incollare con un mouse con tmux


44

Sto usando tmuxe OSX. Quando si copia e incolla dal terminale con tmuxsono in grado di tenere premuto Optione selezionare il testo. Tuttavia non riesco a far rimanere il testo all'interno del riquadro. Quindi, quando voglio copiare il testo, devo scorrere il riquadro all'estrema sinistra o ingrandire il riquadro, come mostrato di seguito.

Questo oltre a dover tenere premuto il Optiontasto è un dolore. So di poter accedere alla modalità visiva e usare i movimenti di VIM per arrivarci, ma preferirei avere un modo di usare il mouse. Qualcuno ha trovato una soluzione alternativa per questo?

inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine


"Tuttavia non riesco a far sì che il testo rimanga all'interno del riquadro." Cosa intendi con questo?
Blaszard,

Risposte:


36

Inserisci questo blocco di codice nel tuo ~/.tmux.conf. Ciò consentirà l'integrazione del mouse consentendoti di copiare da un riquadro con il mouse senza dover eseguire lo zoom.

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"

Successivamente, riavvia la sessione di tmux. Evidenzia del testo con il mouse, ma non lasciarlo andare. Ora mentre il testo è ancora evidenziato e il mouse premuto, premere il tasto Invio. Il testo evidenziato scomparirà e verrà copiato negli appunti. Ora rilascia il mouse.

Oltre a questo, ci sono anche alcune cose interessanti che puoi fare con il mouse come scorrere su e giù, selezionare il riquadro attivo, ecc.

Se stai utilizzando una versione più recente di tmux su macOS, prova quanto segue anziché quello sopra:

# 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"

Se usi iTerm su macOS, vai su iTerm2> Preferenze> scheda "Generale" e, nella sezione "Selezione", seleziona "Le applicazioni nel terminale possono accedere agli Appunti".

E se stai usando Linux e una versione più recente di tmux, allora

# 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"

(Puoi anche consultare https://github.com/gpakosz/.tmux per molte altre opzioni di tmux.)


1
Finalmente qualcosa che funziona davvero! Copiare e incollare è la cosa più fastidiosa nel provare tmux, ci ho rinunciato prima e gli snippet di configurazione che stavo provando si stavano comportando in modo incoerente, grazie mille.
Breno Salgado,

1
Stavo usando iterm in mac e ho dovuto abilitare iTerm2> Preferenze> scheda "Generale", e nella sezione "Selezione", "Le applicazioni nel terminale possono accedere agli Appunti". Riferimento: rushiagr.com/blog/2016/06/16/…
Rujoota Shah

@RujootaShah Sì, è corretto. Devi farlo. Grazie per la condivisione.
GMaster,

1
Grazie! Funziona come un fascino. Ho dovuto installare sudo apt-get install -y xclip(Ubuntu Linux) però.
Petr

funziona perfettamente, grazie @GMaster
Luja Shrestha
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.