2010-11-12 14:02:16 +0000 2010-11-12 14:02:16 +0000
271
271

Desplazamiento de la salida del shell con el ratón en tmux

El desplazamiento del ratón no funciona en tmux de la forma en que funciona cuando ejecuto el shell sin tmux (en Gnome Terminal). Parece que tmux envía los eventos de desplazamiento del ratón como si pulsara las teclas Arriba/Abajo. Pero quiero que se desplace a través del historial de salidas del shell. ¿Hay alguna manera de hacer que tmux funcione así?

Nota: Sé cómo hacer scroll con el teclado (gracias a otra pregunta aquí).

He probado el desplazamiento con el ratón en dos versiones de tmux:

Respuestas (10)

264
264
264
2010-12-01 18:48:45 +0000

Para desplazarse dentro de la historia de la salida Usted usaría ^b + [ Usted puede entonces usar M+V para paginar hacia arriba y ^V para paginar hacia abajo. Sin embargo, no sé si puedes usar las teclas reales PgUp y PgDown. Mi terminal no envía estas teclas al tmux. En su lugar se desplaza a sí mismo y no al historial del tmux.

Para salir del modo de copia, pulse ESC

Para utilizar el ratón en este modo (llamado modo de copia) pulse ^b + : e introduzca lo siguiente:

setw -g mouse on

Nota: En tmux < 2.1, la opción se llamaba mode-mouse, y no mouse

Ahora cuando cambie al modo de copia puede usar el ratón para desplazarse por él. Puedes poner este comando en tu ~/.tmux.conf si quieres para que se cargue cada vez que ejecutes tmux.

Actualización: A partir de tmux 1.5 esta opción hace que el uso de la rueda de desplazamiento cambie automáticamente al modo de copia y se desplace hacia atrás en el buffer de desplazamiento de tmux. Ya no es necesario pulsar primero Ctrl-B + [. El desplazamiento hacia atrás hasta el prompt también finaliza el modo de copia automáticamente.

127
127
127
2015-10-19 11:02:01 +0000

Hay algunos cambios para Tmux 2.1

  • El modo ratón ha sido reescrito. Ahora ya no hay opciones para:

Que sería

set -g mouse on
# to enable mouse scroll, see https://github.com/tmux/tmux/issues/145#issuecomment-150736967
bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'copy-mode -e'"
64
64
64
2011-11-15 20:05:50 +0000

La versión actual de tmux (1.5) permite simplemente activar la opción modo-ratón, y permite desplazarse con la rueda del ratón.

mode-mouse [on | off]
                 Mouse state in modes. If on, the mouse may be used to
                 enter copy mode and copy a selection by dragging, to
                 enter copy mode and scroll with the mouse wheel, or to
                 select an option in choice mode.

En mi .tmux.conf

set-window-option -g mode-mouse on
59
59
59
2012-10-24 16:55:07 +0000

Prueba esto en tu .tmux.conf

# Make mouse useful in copy mode
setw -g mode-mouse on

# Allow mouse to select which pane to use
set -g mouse-select-pane on

# Allow xterm titles in terminal window, terminal scrolling with scrollbar, and setting overrides of C-Up, C-Down, C-Left, C-Right
set -g terminal-overrides "xterm*:XT:smcup@:rmcup@:kUP5=\eOA:kDN5=\eOB:kLFT5=\eOD:kRIT5=\eOC"

# Scroll History
set -g history-limit 30000

# Set ability to capture on start and restore on exit window data when running an application
setw -g alternate-screen on

# Lower escape timing from 500ms to 50ms for quicker response to scroll-buffer access.
set -s escape-time 50

Tomado de http://brainscraps.wikia.com/wiki/Extreme_Multitasking_contmux_yPuTTY

16
16
16
2011-06-22 17:10:05 +0000

Alguien (de una fuente que perdí) sugirió añadir lo siguiente a ~.tmux.conf:

set -g terminal-overrides 'xterm*:smcup@:rmcup@'

No tengo ni idea de cómo funciona o qué hace, pero esto ahora me permite desplazarme con la rueda del ratón dentro de una sesión de tmux sin tener que entrar en el modo de copia de tmux; simplemente desplazo la rueda y ¡BAM! funciona. Tenga en cuenta que estoy usando terminal.app, pero recuerdo que el OP dio la respuesta específicamente para su uso con gnome-terminal.

5
5
5
2015-12-15 23:44:29 +0000

tmux 2.1 introduce nuevos binds para el ratón.

He escrito estos binds hoy mismo. Se vincula sin problemas la rueda del ratón a las flechas cuando no está en Vim, porque Vim es capaz de interpretar los códigos crudos de la rueda del ratón (para propósitos tales como elegir qué ventana de Vim se desplaza por ti dependiendo de sobre cuál está tu ratón).

Esto significa que finalmente podemos usar el ratón sólo para ver varias páginas de manual y cualquier otra cosa que acepte las teclas de flecha. Puedes extender y encadenar la lógica de if como sea necesario para implementar más lógica para tus aplicaciones.

bind -n WheelUpPane if "[[#{pane_current_command} =~ vim]]" "select-pane -t = ; send-keys -M" "select-pane -t = ; send-keys Up"
bind -n WheelDownPane if "[[#{pane_current_command} =~ vim]]" "select-pane -t = ; send-keys -M" "select-pane -t = ; send-keys Down"

Con esta nueva capacidad de vinculación de la rueda es posible programar la rueda del ratón para hacer cualquier comportamiento sensible al contexto que desee.

5
5
5
2019-04-23 15:29:55 +0000

Si ya está en una sesión tmux puede ejecutar el comando

set mouse on

Recordatorio: para ejecutar comandos, utilice su prefijo y luego :.

3
3
3
2010-12-07 07:03:31 +0000

Gnome-terminal hace algunos trucos ingeniosos traduciendo los eventos de desplazamiento del ratón a las teclas de flecha Arriba y Abajo en condiciones de desplazamiento “habitual” restringido. Por ejemplo, cuando ves algún texto usando less (esto sucede en particular cuando estás leyendo un hombre), puedes desplazar el contenido usando j, k, y las teclas de flecha. Pero también, con gnome-terminal, puedes hacerlo con el desplazamiento del ratón, gracias al truco mencionado.

Así que supongo que tmux hace alguna “captura” de la terminal al igual que less - y el mismo mecanismo en gnome-terminal entra en acción: el desplazamiento del ratón se traduce en pulsar las teclas de flecha Arriba/Abajo.

Puedes desactivar esta función en la configuración del perfil y obtener el desplazamiento normal en cualquier circunstancia. Sólo tienes que desmarcar la última casilla de la pestaña “desplazamiento”:

.

1
1
1
2018-01-02 23:48:52 +0000

https://github.com/NHDaly/tmux-better-mouse-mode

Implementación configurable y rica en características del control del ratón para los nuevos tmuxes. muy recomendable.

Es probable que quieras usar

set -g @emulate-scroll-for-no-mouse-alternate-buffer "on"

con él también.

0
0
0
2018-02-12 23:02:10 +0000

Puedes combinar las ideas de vinculación de las otras respuestas para obtener un comportamiento de desplazamiento bastante satisfactorio: funciona en vim cambia al modo de copia automáticamente en la terminal y sale de ella cuando llegas al fondo todavía te permite usar la rueda del ratón en man, less y journalctl.

Mi código:

bind -n WheelUpPane if -t = "test $(echo #{pane_current_command} |grep -e 'man' -e 'less' -e 'journalctl')" "select-pane -t = ; send-keys Up Up Up Up" "if-shell -F -t = '#{?mouse_any_flag,1,#{pane_in_mode}}' 'send-keys -M' 'select-pane -t = ; copy-mode -e; send-keys -M'"
bind -n WheelDownPane if -t = "test $(echo #{pane_current_command} |grep -e 'man' -e 'less' -e 'journalctl')" "select-pane -t = ; send-keys Down Down Down Down" "if-shell -F -t = '#{?mouse_any_flag,1,#{pane_in_mode}}' 'send-keys -M' 'select-pane -t = ; copy-mode -e; send-keys -M'"

puedes añadir otros comandos que requieran las teclas de dirección para el desplazamiento en la parte de grep -e ‘man’

he añadido las teclas de envío varias veces, así que un tick en la rueda del ratón se desplazará 4 líneas a la vez