Recuperando el antiguo comportamiento de copiar y pegar en tmux, con el mouse


111

Esto es lo que solía hacer en tmux para copiar y pegar (usando el mouse, el teclado funciona de manera diferente y no es lo que me interesa):

  1. Seleccionar texto con el mouse, botón izquierdo presionado
  2. Pegar texto con el botón central

He actualizado mi sistema operativo y esto ha obtenido una nueva versión de tmux. No he cambiado mi .tmux.confarchivo de configuración.

Esto es lo que tengo que hacer con la versión actual de tmux, 1.6(que viene preempaquetada en la última versión de crunchbang linux):

  1. Seleccionar texto con el mouse, botón izquierdo presionado y shift tecla
  2. Pegar texto con el botón central
  3. La terminal se bloquea, una pequeña área de información muestra algunos números en la parte superior derecha del panel actual (es decir [0/24], probablemente algo relacionado con la cantidad de caracteres que se han pegado), lo que significa poco para mí y no necesito / quiero (editar: parece copy-modese ingresa automáticamente aquí)
  4. Tengo que presionar la qtecla para volver a tener un terminal funcional.

Esto es demasiado complicado para algo que hago decenas de veces al día. ¿Cómo hacer que el mecanismo antiguo vuelva a funcionar?


2
en mi terminal st, Shift+ MouseMiddlepega la Xselection como comportamiento tradicional. FWIW, MouseMiddlesin un modificador no hace nada.
nabin-info

Respuestas:


84

Para restaurar la configuración predeterminada de copiar / pegar, necesita (al menos temporalmente) desactivar la compatibilidad con el mouse dentro de tmux:

prefix : set -g mouse off

¿Dónde prefixestá la clave de acceso tmux ( Ctrl+ Bde forma predeterminada a menos que la reasigne). :inicia el modo de comando y set -gestablece el parámetro globalmente.

Cuando el modo de mouse está desactivado, las funciones estándar de copiar / pegar proporcionadas por su sistema operativo funcionan como se esperaba.

Otra cosa que podría querer hacer es 'maximizar' el panel actual, para que pueda copiar varias líneas fácilmente.


Si está trabajando con una versión antigua (anterior a 2.1) de tmux, en su lugar necesita usar lo siguiente:

prefix : set -g mode-mouse off

Hay más detalles y algunas combinaciones de teclas útiles para automatizar todo esto aquí:

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

La idea central del artículo vinculado anteriormente es este extracto de .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
Si tiene tmux 1.8 o más reciente, hay un comando integrado, Control-B z, que cambiará el estado ampliado del panel actual. Entonces CB z para acercar este panel a pantalla completa, el mismo comando nuevamente para restaurar. Esto elimina la necesidad de definir las secuencias de teclas CB + y CB - al final de la configuración anterior.
dr-ene

9
Si tiene tmux 2.1 o más reciente, todos los comandos relacionados con el mouse se han vuelto obsoletos, reemplazados por 'mouse' que configura todo. Entonces, para deshabilitar el modo de mouse de forma predeterminada, use 'setw -g mouse off'. Elimine cualquier referencia a 'mode-mouse', 'mouse-resize-pane', 'mouse-select-pane' o 'mouse-select-window'.
dr-jan

50
Sin embargo, el modo mouse tiene sus ventajas: me permite desplazarme. ¿Existe una combinación de configuraciones que me permita usar mi terminal como un maldito terminal normal? ¿Copiar / pegar y desplazarse incluido?
Mihai Danila

1
¿Hay alguna otra configuración que puede haber metido con, porque en OSx (Sierra), optionno ayuda. Girar mode-mouse offme permite seleccionar como de costumbre, pero luego no puedo copiar en el portapapeles ( cmd+Co cmd+shift+Cno hacer nada, o hacer sonar una campana de error, o abrir el selector de color)
dwanderson

3
Probado con tmux v3, un enlace para encenderlo y apagarlo:bind-key -T prefix m set -g mouse\; display 'Mouse: #{?mouse,ON,OFF}'
Evgeny

248
  1. Copiar el texto: seleccione el texto y presione el mouse left-buttoncon la shifttecla presionada también.
  2. Pega el texto con la shifttecla +middle-button

30
Para los usuarios de OSX, es la clave de opción, como se describe en esta publicación de blog: awhan.wordpress.com/2012/04/18/tmux-copy-paste-with-mouse
pangratz

3
De hecho, después de seleccionar texto con Shift + LMB, puede usar la funcionalidad del sistema operativo (Ctrl-Shift-C en mi caso) para copiar en el portapapeles que no sea X11.
Eugene Pankov

8
El OP indica claramente que quieren poder copiar y pegar con el mouse, sin usar el teclado. Pulsar Shift(o la tecla de opción en OSX) es el truco más antiguo del libro y funciona en la mayoría de los emuladores, pero no responde a la pregunta original.
Lqueryvg

1
@pangratz El uso de la tecla de opción puede funcionar para los usuarios de iTerm, pero no para los usuarios de Terminal nativo.
anishpatel

¡Gracias por esta solución! Sin embargo, sigue siendo subóptimo: la rueda del mouse = desplazarse por el historial, y todas las demás funciones del mouse = normal serían mucho mejores.
Torsten Bronger

36

Si "configura -g mode-mouse on" puedes hacer este truco:

En Mac, presione el botón "fn", luego seleccione el texto y cópielo con el botón derecho del mouse o el teclado cmd + c.


4
para mí, esto parece funcionar solo si no me desplazo con el mouse. una vez que me desplazo con el mouse, esto ya no funciona
Paul

También puedes pegar con fn+Middle-Click
spinup

10

Modificado desde aquí , utilizo en xcliplugar de xselen el original:

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

Esto está funcionando felizmente para mí en tmux 2.5-rc2


esto funciona bien en la terminal, pero se comporta raro cuando trato de pegar en vim
Tropilio

9

Utilice <prefix>+mactivar o desactivar el modo de mouse

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

Esto funcionó perfecto para mí. Muchas gracias. Quería poder desplazarme en modo mouse, pero eso estaba rompiendo mi capacidad para copiar texto. Esto permite un cambio rápido si desea desactivar el modo de mouse.
Bijan

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

el usuario quiere poder copiar y pegar, ¡no más personalización .tmux.conf!
Jack Wasey

6

Tuve problemas para hacer que el ejemplo de Christian funcionara para Tmux 2, creo que algunos errores tipográficos. Conseguí que lo siguiente funcionara y es un poco más fácil de leer y establece el modo global y de ventana. hth alguien. nuevo usuario y tmux es genial!

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
Funciona para mi. Probado contra tmux HEAD de github (a partir de ayer).
Lqueryvg

2
Para que esto funcione, tuve que cambiar la show-optionslínea a tmux show-options -g | grep -q "mouse\\s*on"; \ . Esto se debe a que la expresión regular mouse.*oncoincide con la @scroll-in-moused-over-pane "on"que es parte del complemento nhdaly / tmux-better-mouse-mode
Mandy Schoep

1
Encuadernación más simple que hace básicamente lo mismo -bind-key -T prefix m set -g mouse\; display 'Mouse: #{?mouse,ON,OFF}'
Evgeny

6

Para usuarios de Mac + iTerm2 + tmux (versión> 2.1) :

Asegúrese de que el modo de mouse esté configurado en tmux config (solo agregue set -g mode-mouse on~ / .tmux.conf). Ahora, para copiar el texto dentro de un panel:

  1. Presione option + commandy seleccione el texto que desea copiar con el cursor del mouse. Es como recortar una foto.
  2. El texto seleccionado se habría copiado automáticamente (no es necesario command + c). Solo pégalo por los medios habituales.

5

Yves Blusseau me ayudó a descubrir cómo funciona, pero en mi máquina (con Windows 10 ) el comportamiento era un poco diferente.

tmux 2.6

Con mouse activado ( :set -g mouse on)

Copiar

  1. Mantenga pulsado Shifty seleccione con el ratón el texto que desea copiar
  2. Ahora haga clic derecho para copiar el texto seleccionado (sin mantener presionado Shift)

Pegar

  1. Mantenga presionada Shifty haga clic derecho para insertar el texto copiado

Simple como eso. ¡Disfrutar!


El mejor. Simple y elegante.
Débil

3

Esta es una versión modificada de la respuesta de Kaixuan que es compatible 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;`"

Todas las mode-mouseopciones se han combinado en una sola mouseopción y show-optiontuvieron que ser reemplazadas porshow-options


1
se supone que esto está en el tmux.conf? ??
Arnold Roa

1
¿A dónde va esto?
2016

@ArnoldRoa @statquant: Sí, esto va al ~/.tmux.confarchivo. Vincula la <prefix>+mclave para ejecutar ese script en línea.
inblueswithu

0

en ~/.tmux.conf:

set -g mouse off

tener también bind r source-file ~/.tmux.confpuede ser útil para que pueda ctrl-d rvolver a cargar la configuración, por ejemplo.


0

Según las otras respuestas publicadas aquí, he creado una solución concisa que funciona con (al menos) tmux 2.8 y tmux 3.1 .

Puede alternar entre tmux mouse supportencendido y apagado presionando prefix- M. En el .tmux.confarchivo, incluya esta línea:

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

Esto se mostrará mouse: 1cuando esté habilitado y mouse: 0cuando esté deshabilitado. Al presionar repetidamente prefix, Mse alternará el modo de mouse entre encendido y apagado .

Ver también: soporte para mouse tmux

EDITAR: Si ve un returned 1mensaje de error de comando , deberá usar lo siguiente en su lugar para tmux 3.1 o tmux 3.2 :

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

(esta solución se mencionó anteriormente)


-1

Utilizo el siguiente enlace para seleccionar texto con el botón izquierdo del mouse presionado -

bind -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "/mnt/c/Windows/System32/clip.exe"
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.