¿Cómo rechazar el tiempo de espera entre la tecla de prefijo y la tecla de comando en tmux?

45

Mi ~/.tmux.conf:

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

bind-key o split-window -v
bind-key e split-window -h

bind-key w kill-pane

(para que las teclas de comando sean las mismas que GNOME Teminator)

La situación: después de dividir la ventana horizontal en 2 paneles, cambiar a un panel con flecha Ctrl+ a Up, debo esperar un momento (2-3 segundos) para ver los comandos del historial de shell en este panel. Porque si presiono Upnuevamente, volverá al otro panel en lugar de mostrarme un comando de historial de shell. ¿Cómo puedo rechazar esto?

quanta
fuente
Una alternativa potencialmente útil es usar CTRL + B q, esto muestra los números de ventana en tmux. Presionando CTRL + B q <número> lo llevará a esa ventana, arriba / abajo estará disponible de inmediato. Debe escribir el número que sigue a q con bastante rapidez. También hay un tiempo de espera para controlar esto.
Spacen Jasset

Respuestas:

53

Arriba, Abajo, Izquierda y Derecha ( select-paneenlaces; y Control- y Meta- de las mismas teclas para resize-pane) son enlaces "repetibles" por defecto (realizados a través de bind-key -r). Después de escribir la tecla de prefijo y cualquier tecla repetible individual, puede escribir cualquier otra tecla repetible (sin tener que volver a escribir el prefijo) dentro del número de milisegundos especificado a través de la repeat-timeopción de sesión (el valor predeterminado es 500 ms).

Puede examinar el valor actual de repeat-timecon estos comandos de shell:

tmux show-options -g | grep \^repeat-time     # global
tmux show-options    | grep \^repeat-time     # this session

Si desea deshabilitar la repetición para la sesión actual, escriba su prefijo, dos puntos e ingrese este comando:

set-option repeat-time 0

O bien, puede encontrar un valor cómodo distinto de cero. Si realmente tiene un valor de alrededor de 2000 (es decir, 2 s), entonces supongo que se está configurando /etc/tmux.conf.

Si desea deshabilitar la repetición (o cambiar el tiempo de espera) para todas sus sesiones, configure el valor global con este comando:

set-option -g repeat-time 0

Si ha establecido un valor por sesión, deberá desarmarlo antes de que el valor global entre en vigencia en esa sesión ( set-option -u repeat-time). Es posible que .tmux.confdesee establecer el valor global a través de su si prefiere dejarlo "permanentemente".

Si solo tiene problemas con Up, puede volver a vincularlo sin -r:

bind-key Up select-pane -U
Chris Johnsen
fuente
4

También puede desactivar la repetición para combinaciones de teclas específicas, si lo desea. Por ejemplo, los enlaces predeterminados para cambiar entre paneles se reducen a:

bind-key -r Up    select-pane -U
bind-key -r Down  select-pane -D
bind-key -r Left  select-pane -L
bind-key -r Right select-pane -R

Podrías recrearlos sin la -rbandera, como

bind-key    Up    select-pane -U
bind-key    Down  select-pane -D
bind-key    Left  select-pane -L
bind-key    Right select-pane -R

Personalmente, prefiero que el cambio de panel no sea repetible. Repetir es bueno si tiene una ventana dividida en muchos paneles pequeños, pero puede conducir a colisiones clave (como usted describió) con las aplicaciones que se ejecutan dentro de esos paneles (como el historial de shell, vim, etc.), y yo generalmente no tienen más de 2 paneles por ventana de todos modos. Pero a cada cual lo suyo.

ivan
fuente