¿Cómo me desplazo en tmux?

1295

Acabo de comenzar a usar tmux, y realmente me gusta, pero necesito poder desplazarme dentro de los búferes / paneles / ventanas que he abierto. No me importa si funciona con el mouse o no. Cuando busco en la página de manual de tmux, encuentro solo dos instancias de la palabra "scroll" incluso apareciendo, y ambas tienen que ver con el modo de copia. ¿Hay alguna manera de desplazarse sin toda la sobrecarga de ingresar al modo de copia?

chadoh
fuente
8
¿Qué gastos generales le preocupan? copy-modees la forma de ver el historial (y opcionalmente copiar cosas de él).
Chris Johnsen
2
para mí puede presionar f7 para el modo de desplazamiento yq para salir
JohnMerlino
77
set -g mode-mouse onLa respuesta de per @ chaiyachaiya fue la ganadora para mí
Peter Berg

Respuestas:

1571

Ctrl- bluego [puede usar las teclas de navegación normales para desplazarse (p. ej. Up Arrowo PgDn). Presione qpara salir del modo de desplazamiento.

Alternativamente, puede presionar Ctrl- b PgUppara ir directamente al modo de copia y desplazarse una página hacia arriba (que es lo que parece que querrá la mayor parte del tiempo)

En el vimodo (ver más abajo), también puede desplazar la página arriba / abajo línea por línea usando Shift- ky Shift- j(si ya está en modo de desplazamiento). Sin desplazamiento, el cursor se mueve en lugar de la página.

Extractos de la página del manual :

tmux puede controlarse desde un cliente adjunto mediante el uso de una combinación de teclas de una tecla de prefijo, 'C-b' (Ctrl-b) de forma predeterminada, seguido de una tecla de comando.

 The default command key bindings are:

[           Enter copy mode to copy text or view the history.

Function                     vi              emacs
--------                     --              -----
Half page down               C-d             M-Down
Half page up                 C-u             M-Up
Next page                    C-f             Page down
Previous page                C-b             Page up
Scroll down                  C-Down or C-e   C-Down
Scroll up                    C-Up or C-y     C-Up
Search again                 n               n
Search again in reverse      N               N
Search backward              ?               C-r
Search forward               /               C-s

Además de un montón más. Tenga en cuenta que debe presionar C-bdos veces si lo usa para subir página, ya que C-bestá enlazado como la tecla de comando. Consulte la página del manual para obtener información sobre cómo anteponer un comando de modo de copia con un recuento repetido.

Puede configurar el modo de enlace de teclas usando Ctrl- b, luego

:set-window-option mode-keys emacs

o vi.

Dennis Williamson
fuente
14
Creo que C-b =es choose-bufferpor defecto. ¿Quiso decir C-b [(que es copy-modepor defecto)? También puede usar C-b PageUppara iniciar el modo de copia directamente en la página anterior (muy útil cuando sabe que lo que desea ver / copiar ya se ha desplazado fuera de la página actual).
Chris Johnsen
44
Correcto, mi tmux no tiene modo de desplazamiento. Debe C-b [ingresar al modo de copia y luego usar las combinaciones de teclas emacs o vi para desplazarse. Esto parece una gran cantidad de pasos solo para desplazarse, pero los beneficios de tmux aún superan estas molestias. Estoy en un macbook y no hay una tecla PageUp: - \. (Además, ¿cómo hago claves con Markdown como lo hiciste, Dennis?)
chadoh
44
@chadoh: Pruebe estos en su Macbook: Inicio: fn-LeftArrow; Fin: fn-RightArrow; Página arriba: fn-UpArrow; Av Pág: fn-DownArrow. Para hacer teclas:<kbd>Ctrl</kbd>
Dennis Williamson
55
en macbook, el fn + up va directamente a la aplicación de terminal y nunca llega a tmux
Tyler
15
En un macbook, si está en modo de desplazamiento, puede usar fn + Mayús + Flecha izquierda para desplazarse hacia arriba en una página.
Nick Hammond
306

Bueno, debe considerar la forma correcta de configurar el desplazamiento: agregue su tmux.conf

set -g mouse on        #For tmux version 2.1 and up

o

set -g mode-mouse on   #For tmux versions < 2.1

A mí me funcionó en ventanas y cristales. Ahora tmux es simplemente perfecto.

Práctico tmux tiene más información sobre los archivos tmux.conf.

chaiyachaiya
fuente
55
Cuando hago esto, los clics y los desplazamientos del mouse causan que se impriman caracteres de galimatías en el área de solicitud del terminal que estoy usando con tmux. ¿Algunas ideas?
ely
22
Futuros usuarios de mouse tmux: para evitar que tenga que desplazarse hacia la parte inferior nuevamente antes de escribir, puede presionar qpara salir del modo de desplazamiento.
Jezen Thomas
15
El desplazamiento del mouse funciona bien con esto, pero desafortunadamente ya no puedo usar el mouse para seleccionar texto. Usando Tilda y tmux.
friederbluemle
27
Tenga en cuenta que en tmux 2.1 y versiones posteriores, esto se reemplaza por set -g mouse on, y el desplazamiento no ingresa automáticamente al modo de copia como lo hacía antes.
thrnio
25
Nota importante: esta configuración interrumpe el resaltado y la copia de texto. Use Mayús + clic para mantener esta funcionalidad.
Shadoninja
141

Desde mi .tmux.conf:

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

Esto permite el desplazamiento nativo de xterm.

togdon
fuente
28
¿Puedes explicar qué hace esto exactamente?
Ivo
11
No sé lo que hace, pero es puro genio. Finalmente, el desplazamiento tmux funciona, ¡sí!
uno mismo
55
Esto no funciona para mí en OS X ...
Nick
17
Solución: gist.github.com/1297707
Nick
66
Mira esto si usted está confundido acerca de la respuesta de togdon: superuser.com/questions/310251/... OMI, si sólo tiene un único panel, esta solución funciona mejor que la respuesta aceptada.
thameera
57

Para el nuevo tmux 2.1, para desplazarse con su mouse de manera sensata, esta es la respuesta correcta:

set -g mouse on
" sane scrolling:
bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'copy-mode -e; send-keys -M'"

no basta con volver a cargar su .tmux.conf, debe reiniciar su tmux, p. ej. tmux kill-server && tmux

tomado de https://github.com/tmux/tmux/issues/145

Flov
fuente
1
¿Cómo es que esta no es la respuesta aceptada?
Marcel
2
la nota en esta respuesta sobre "no es suficiente para simplemente recargar .tmux.conf ayudó" y ¡salir de todas las sesiones de tmux para mí (tal vez kill-server funcionaría) ayudó!
Colin D
1
¿podría explicar cómo funciona esto?
oligofren
Parece reenviar eventos del mouse cuando se hace clic / se desplaza el mouse / etc. si el panel está en algún estado indirecto / protegido (¿solo modo copia?), y el mouse está presionando un botón, desplazándose, etc. La última parte cubre el desplazamiento en modo directo cambiando primero a un modo indirecto. Si no fuera por esos controles, el terminal podría interpretar los eventos como desplazamiento del historial, si es que lo hace. Dicho esto, no sé si alguna vez pude hacer que mi buscapersonas y Vim se desplazaran correctamente al mismo tiempo, y he probado un montón de fragmentos.
John P
2
@chefarov: según un comentario sobre otra respuesta, puede hacerlo mediante Shift+clickel modo de mouse activado.
Brendan Moore
14

En mi caso, solo opt+ UpArrowy opt+ DownArrowen OSX.

ythdelmar
fuente
@ fixer1234 La pregunta no menciona Linux en absoluto. tmuxtambién se puede usar en OS X.
slhck
@slhck: Gracias. Demasiados ojos llorosos; el astigmatismo comenzó. Había leído mal la etiqueta tmux como una etiqueta de linux.
fixer1234
11

Esta es la forma en que lo hice funcionar, y las razones por las que creo que es mejor que la forma predeterminada.

Para probarlo, ingrese todas las secciones del código ~/.tmux.conf.

Paso 1. Cambie la clave de prefijo para que no tenga que alcanzar un bit. Aparentemente, 'B' es una tecla cerrada, pero está en el medio de los dos dedos índices (en 'F' y 'J', respectivamente). Debido a que ese acceso directo es esencial en tmux, Cj es mucho mejor ya que implica un movimiento de la mano cero (además de presionar la tecla).

set -g prefix C-j
unbind C-b
bind C-j send-prefix

Paso 2. 'S' (para ingresar al modo de copia) es: 1) cerrar (el mismo motivo que el anterior), 2) involucra la otra mano (comparar: el 1-2 en el boxeo o el lscomando para ver archivos en un directorio ), y 3) podrían considerarse mnemotécnicos para "desplazamiento" (aunque el modo de copia no se trata solo de desplazamiento).

bind s copy-mode

Paso 3. La última parte, el desplazamiento real. 'P' y 'N' son familiares para este propósito para los usuarios de Emacs. Son cercanos, intuitivos ('P' está por encima de 'N' en el teclado) y mnemotécnicos ("anterior" y "siguiente"). Si acaba de desplazarse en Emacs y luego va a tmux, tiene sentido tener esos accesos directos.

Sin embargo, descubrí que 'I' y 'K' son aún mejores: están aún más cerca que 'P' y 'N', e intuitivas (por la misma razón); En cuanto a la mnemotecnia, ya que el desplazamiento es algo muy común, la mnemotecnia realmente no importará, ya que los atajos pronto pasarán por alto tu cerebro y entrarán en la memoria muscular.

bind -t emacs-copy 'p' scroll-up
bind -t emacs-copy 'n' scroll-down
bind -t emacs-copy 'i' scroll-up
bind -t emacs-copy 'k' scroll-down
Emanuel Berg
fuente
7

Busqué mucho por esto y la mejor solución para mí funciona como se menciona en esta guía detallada: http://tangledhelix.com/blog/2012/07/16/tmux-and-mouse-mode/

Agregue estos enlaces en ~ / .tmux.conf:

set -g mode-mouse on

unbind +
bind + \
  new-window -d -n tmux-zoom 'clear && echo TMUX ZOOM && read' \;\
  swap-pane -s tmux-zoom.0 \;\
  select-window -t tmux-zoom

unbind -
bind - \
  last-window \;\
  swap-pane -s tmux-zoom.0 \;\
  kill-window -t tmux-zoom

Con el enfoque anterior implementado, también puede copiar desde los paneles en una ventana haciendo zoom en cada panel usando Prefix + .

Un detalle importante que faltaba con el modo del mouse es presionar Shift antes de seleccionar un área para copiar. Esto lo copiará al búfer de terminal tradicional en lugar del búfer de copia tmux. ( https://wiki.archlinux.org/index.php/Tmux#Scrolling_issues )

muneeb
fuente
7

Recomiendo probar el complemento tmux-better-mouse-mode para resolver la mayoría de los problemas relacionados con el mouse tmux.

Es compatible con Tmux 2.1+ y el nuevo set-option -g mouse onenfoque.

aymericbeaumet
fuente
1
Gracias, esta es la mejor solución para mí. Cubre todos los enlaces de la rueda de mi mouse que he agregado manualmente (por lo que ya no los necesito), y hay dos características increíbles que quería mucho: scroll-without-changing-paneen combinación con scroll-without-changing-paney emulate-scroll-for-no-mouse-alternate-buffer. Ahora mi experiencia de uso de tmux es mucho mejor.
selurvedu
6

Lo único que funciona para mí es poner lo siguiente en ~/.tmux.conf

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

(es posible que deba reiniciar para que esto surta efecto)

Actualizar:

Descubrí que si cambia la configuración en Putty Connection> Datos> Tipo de terminal a "masilla" (utilizada para solucionar algunos problemas de formato) de "xterm", esta solución deja de funcionar.

Actualización 2:

Use esto si quiere "masilla" como su tipo de terminal: set -g terminal-overrides "putty*:XT:smcup@:rmcup@:kUP5=\eOA:kDN5=\eOB:kLFT5=\eOD:kRIT5=\eOC"

phocks
fuente
2
Este realmente resuelve mi problema de desplazamiento en la aplicación de iPhone también.
NathaneilCapital
Lo último que probé fue que ya no funcionaba, pero funcionó. Extraño. set -ga terminal-overrides ',xterm*:smcup@:rmcup@'
mete el
4

Esto funcionó para mí:

vim ~/.tmux.conf
set -g mode-mouse on      ###Insert this setting with vim, then source the file.
tmux source-file ~/.tmux.conf
Chhetri
fuente
2
Desde la versión 2.1 (18 de octubre de 2015) la opción debería serset -g mouse on
naoko
+1 para proporcionar realmente la ruta completa del archivo de configuración. La respuesta de @ chaiyachaiya sería perfecta de lo contrario.
John McFarlane
1

FWIW, en un Macbook / OSX Mojave, después de ctrl+[hacer:

  • up arrow para alinearse
  • down arrow para línea abajo
  • fn + up arrow para subir página
  • fn + down arrow para la página abajo
  • q para salir del modo de vista
mithunpaul
fuente
0

Lo único que funcionó para mí fue vim ~ / .tmux.conf set -g mode-mouse en ### Inserte esta configuración con vim, luego obtenga el archivo. Archivo fuente tmux ~ / .tmux.conf

Sarika Soni
fuente
¿Podrías usar algún formato para aclarar esto? Use el botón EDITAR y luego mire las opciones disponibles en el editor para agregar los formatos útiles.
music2myear
-2
  • Ctrl+ A- para comenzar a desplazarse
  • Ctrl+ C- para detener el desplazamiento
usuario656723
fuente
3
Esta publicación es demasiado corta para ser útil para responder la pregunta. Agrega muy poca información nueva a las respuestas ya publicadas; no dice nada sobre cómo desplazarse (solo cómo cambiar dentro y fuera del modo de copia). Además, la combinación de teclas de prefijo de comando predeterminada es Ctrl-B( Ctrl-Aes la predeterminada para la pantalla GNU).
Anthony Geoghegan
1
No estoy seguro si el autor de esta respuesta incluso entendió la pregunta. Es inútil y simplemente está mal.
Vik
2
He estado buscando cómo detener el desplazamiento durante tanto tiempo, ¡gracias por señalarlo!
PERR0_HUNTER