¿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?


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.


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.


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.


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


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


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.


@ 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

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 )


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.


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"


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

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

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


¿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

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