Ripristino del vecchio comportamento copia incolla in tmux, con il mouse


111

Questo è quello che facevo in tmux per copiare-incollare (usando il mouse, la tastiera funziona in modo diverso e non è quello che mi interessa):

  1. Seleziona il testo con il mouse, tasto sinistro premuto
  2. Incolla il testo con il pulsante centrale

Ho aggiornato il mio sistema operativo e questo ha ottenuto una nuova versione di tmux. Non ho cambiato il mio .tmux.conffile di configurazione.

Questo è ciò che ho a che fare con la versione corrente di tmux, 1.6(che viene preconfezionata nell'ultimo crunchbang linux):

  1. Seleziona il testo con il mouse, il tasto sinistro premuto e il shift tasto
  2. Incolla il testo con il pulsante centrale
  3. Il terminale viene bloccato, una piccola area di informazioni mostra alcuni numeri in alto a destra del riquadro corrente (cioè [0/24], probabilmente qualcosa relativo a quanti caratteri sono stati incollati), il che significa poco per me e non ne ho bisogno / voglio (modifica: it sembra copy-modesia inserito automaticamente qui)
  4. Devo premere il qtasto per ottenere di nuovo un terminale funzionante.

Questo è troppo fastidioso per qualcosa che faccio dozzine di volte al giorno. Come far funzionare di nuovo il vecchio meccanismo?


2
nel mio terminale st, Shift+ MouseMiddleincolla la Xselection come un comportamento tradizionale. FWIW, MouseMiddlesenza un modificatore non fa nulla.
nabin-info

Risposte:


84

Per ripristinare la configurazione predefinita di copia / incolla è necessario (almeno temporaneamente) disattivare il supporto del mouse all'interno di tmux:

prefix : set -g mouse off

Dov'è prefixla chiave di accesso tmux ( Ctrl+ Bdi default a meno che non la mappate nuovamente). :avvia la modalità di comando e set -gimposta il parametro a livello globale.

Quando la modalità mouse è disattivata, le funzioni standard di copia / incolla fornite dal sistema operativo funzionano come previsto.

Qualcos'altro che potresti voler fare è 'massimizzare' il riquadro corrente, in modo da poter copiare facilmente più righe.


Se stai lavorando con una vecchia versione (precedente alla 2.1) di tmux, devi invece usare quanto segue:

prefix : set -g mode-mouse off

Ci sono maggiori dettagli e alcune pratiche combinazioni di tasti per automatizzare tutto questo qui:

http://tangledhelix.com/blog/2012/07/16/tmux-and-mouse-mode/

Il punto centrale dell'articolo collegato sopra è questo estratto da .tmux.conf:

# disable mouse control by default - change 'off' to 'on' to enable by default.
setw -g mode-mouse off
set-option -g mouse-resize-pane off
set-option -g mouse-select-pane off
set-option -g mouse-select-window off
# toggle mouse mode to allow mouse copy/paste
# set mouse on with prefix m
bind m \
    set -g mode-mouse on \;\
    set -g mouse-resize-pane on \;\
    set -g mouse-select-pane on \;\
    set -g mouse-select-window on \;\
    display 'Mouse: ON'
# set mouse off with prefix M
bind M \
    set -g mode-mouse off \;\
    set -g mouse-resize-pane off \;\
    set -g mouse-select-pane off \;\
    set -g mouse-select-window off \;\
    display 'Mouse: OFF'
# zoom this pane to full screen
bind + \
    new-window -d -n tmux-zoom 'clear && echo TMUX ZOOM && read' \;\
    swap-pane -s tmux-zoom.0 \;\
    select-window -t tmux-zoom
# restore this pane
bind - \
    last-window \;\
    swap-pane -s tmux-zoom.0 \;\
    kill-window -t tmux-zoom

13
Se hai tmux 1.8 o più recente, c'è un comando integrato, Control-B z che cambierà lo stato di ingrandimento del riquadro corrente. Quindi CB z per ingrandire questo riquadro a schermo intero, lo stesso comando di nuovo per ripristinare. Ciò elimina la necessità di definire le sequenze di tasti CB + e CB - alla fine della configurazione di cui sopra.
dr-jan

9
Se hai tmux 2.1 o più recente, tutti i comandi relativi al mouse sono stati resi obsoleti, sostituiti da 'mouse' che imposta tutto. Quindi, per disabilitare la modalità mouse di default usa 'setw -g mouse off'. Rimuovi qualsiasi riferimento a "mode-mouse", "mouse-resize-pane", "mouse-select-pane" o "mouse-select-window".
dr-jan

50
Tuttavia, la modalità mouse attiva ha i suoi vantaggi: mi permette di scorrere. Esiste una combinazione di impostazioni che mi consente di utilizzare il mio terminale come un normale terminale maledetto? Copia / incolla e scorrimento inclusi?
Mihai Danila

1
C'è qualche altra impostazione con cui potrei aver pasticciato, perché su OSx (Sierra), optionnon aiuta. Girare mode-mouse offmi consente di selezionare normalmente, ma poi non posso copiare negli appunti ( cmd+Co cmd+shift+Cnon fare nulla, o suonare un campanello di errore, o far apparire il selettore del colore)
dwanderson

3
Testato con tmux v3, un binding per accenderlo e spegnerlo:bind-key -T prefix m set -g mouse\; display 'Mouse: #{?mouse,ON,OFF}'
Evgeny

248
  1. Copiare il testo: selezionare il mouse testo e premere left-buttoncon shiftpressione di un tasto troppo.
  2. Incolla il testo con il shifttasto +middle-button

30
Per gli utenti OSX è la chiave di opzione, come descritto in questo post del blog: awhan.wordpress.com/2012/04/18/tmux-copy-paste-with-mouse
pangratz

3
Infatti, dopo aver selezionato il testo con Shift + LMB puoi usare la funzionalità del sistema operativo (Ctrl-Shift-C nel mio caso) per copiarlo negli appunti non X11.
Eugene Pankov

8
L'OP afferma chiaramente che vogliono essere in grado di copiare e incollare con il mouse, senza usare la tastiera. Premere Shift(o il tasto opzione su OSX) è il trucco più vecchio del libro e funziona sulla maggior parte degli emulatori, ma non risponde alla domanda originale.
Lqueryvg

1
@pangratz L'utilizzo del tasto opzione può funzionare per gli utenti iTerm, ma non per gli utenti del terminale nativo.
anishpatel

Grazie per questa soluzione alternativa! Tuttavia, è ancora non ottimale: rotellina del mouse = scorrere la cronologia e tutte le altre funzioni del mouse = normale sarebbero molto meglio.
Torsten Bronger

36

Se "set -g mode-mouse on" puoi fare questo trucco:

Su Mac, premi il pulsante "fn", quindi seleziona il testo e copia con il tasto destro del mouse o la tastiera cmd + c.


4
per me questo sembra funzionare solo se non scorro con il mouse. una volta che scorro con il mouse, non funziona più
Paul

Inoltre puoi incollare con fn+Middle-Click
spinup

10

Modificato da qui - utilizzo al xclipposto xseldell'originale:

bind -T root MouseDown2Pane run -b "xclip -o | tmux load-buffer - && tmux paste-buffer -s ' '"

Questo funziona allegramente per me in tmux 2.5-rc2


funziona bene nel terminale, ma si comporta in modo strano quando provo a incollare in vim
Tropilio

9

Uso <prefix>+mginocchiera modo mouse o disattivare

bind m run "if [[ `tmux show-option -w | grep mode-mouse.*on` ]]; then toggle=off; else toggle=on; fi; tmux display-message \"mouse tmux: \$toggle\"; tmux set-option -w mode-mouse \$toggle &> /dev/null; for cmd in mouse-select-pane mouse-resize-pane mouse-select-window; do tmux set-option -g \$cmd \$toggle &> /dev/null; done;"

Questo ha funzionato perfettamente per me. Grazie mille. Volevo essere in grado di scorrere in modalità mouse, ma questo stava rompendo la mia capacità di copiare il testo. Ciò consente una commutazione rapida se si desidera disabilitare la modalità mouse.
Bijan

6
Io usobind m set-option mouse\; display-message "Mouse is now #{?mouse,on,off}"
Maxim Suslov

l'utente vuole essere in grado di copiare e incollare, non ancora di personalizzare .tmux.conf!
Jack Wasey

6

Ho avuto problemi a far funzionare l'esempio di Christian per Tmux 2, penso che alcuni errori di battitura. Ho funzionato quanto segue ed è un po 'più facile da leggere e imposta sia la modalità globale che quella a finestra. hth qualcuno. nuovo utente e tmux è fantastico!

bind m run "\
    tmux show-options -g | grep -q "mouse\\s*on"; \
    if [ \$? = 0 ]; \
    then  \
        toggle=off;  \
    else  \
        toggle=on;  \
    fi;  \
    tmux display-message \"mouse is now: \$toggle\";  \
    tmux set-option -w mouse \$toggle; \
    tmux set-option -g mouse \$toggle; \
    "

1
Per me va bene. Testato contro tmux HEAD da github (fino a ieri).
Lqueryvg

2
Per fare questo lavoro ho dovuto cambiare la show-optionslinea in tmux show-options -g | grep -q "mouse\\s*on"; \ . Questo perché la regex mouse.*oncorrisponde a quella @scroll-in-moused-over-pane "on"che fa parte del plugin nhdaly / tmux-better-mouse-mode
Mandy Schoep

1
Rilegatura più semplice che fondamentalmente fa la stessa cosa -bind-key -T prefix m set -g mouse\; display 'Mouse: #{?mouse,ON,OFF}'
Evgeny

6

Per gli utenti di Mac + iTerm2 + tmux (versione> 2.1) :

Assicurati che la modalità mouse sia impostata in tmux config (aggiungi semplicemente set -g mode-mouse on~ / .tmux.conf). Ora, per copiare il testo all'interno di un riquadro:

  1. Premere option + commande selezionare il testo che si desidera copiare utilizzando il cursore del mouse. È come ritagliare una foto.
  2. Il testo selezionato sarebbe stato copiato automaticamente (non è necessario command + c). Basta incollarlo con i normali mezzi.

5

Yves Blusseau mi ha aiutato a capire come funziona, ma sulla mia macchina (con Windows 10 ) il comportamento era leggermente diverso.

tmux 2.6

Con il mouse attivato ( :set -g mouse on)

copia

  1. Tieni premuto Shifte seleziona con il mouse il testo che desideri copiare
  2. Ora fai clic con il tasto destro per copiare il testo selezionato (senza tenere premuto Shift)

Incolla

  1. Tenere premuto Shifte fare clic con il tasto destro per inserire il testo copiato

Semplice come quella. Godere!


Il migliore. Semplice ed elegante.
debole

3

Questa è una versione modificata della risposta di Kaixuan compatibile con Tmux 2.1.

`bind m run "if [[ `tmux show-options -w | grep mouse.*on` ]]; then toggle=off; else toggle=on; fi; tmux display-message \"mouse tmux: \$toggle\"; tmux set-option -w mouse \$toggle &> /dev/null;`"

Tutte le mode-mouseopzioni sono state combinate in un'unica mouseopzione e show-optiondovevano essere sostituite conshow-options


1
questo dovrebbe essere su tmux.conf? ??
Arnold Roa

1
dove sta andando?
statquant

@ArnoldRoa @statquant: Sì, questo va nel ~/.tmux.conffile. Sta vincolando la <prefix>+mchiave per eseguire quello script inline.
inblueswithu

0

in ~/.tmux.conf:

set -g mouse off

avere bind r source-file ~/.tmux.confpuò essere utile anche così puoi fare ctrl-d rper ricaricare la configurazione per esempio.


0

Sulla base delle altre risposte pubblicate qui, ho creato una soluzione concisa che funziona con (almeno) tmux 2.8 e tmux 3.1 .

È possibile attivare tmux mouse supporte disattivare premendo prefix- M. Nel .tmux.conffile, includi questa riga:

bind-key -T prefix m run "m=$(tmux show -g mou|grep -q on;echo $?);tmux set -g mou $m;tmux display mouse:\$m"

Questo verrà visualizzato mouse: 1quando abilitato e mouse: 0quando disabilitato. Premendo ripetutamente prefix- Malternerà la modalità mouse tra on e off .

Vedi anche: supporto per mouse tmux

MODIFICA: se viene visualizzato un returned 1messaggio di errore del comando, sarà necessario utilizzare quanto segue invece per tmux 3.1 o tmux 3.2 :

bind-key -T prefix m set -g mouse\; display 'Mouse: #{?mouse,ON,OFF}'

(questa soluzione è stata menzionata in precedenza)


-1

Uso il seguente binding per selezionare il testo con il pulsante sinistro del mouse premuto -

bind -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "/mnt/c/Windows/System32/clip.exe"
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.