Come ridurre il timeout tra il tasto prefisso e il tasto comando in tmux?


45

Il mio ~/.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

(per rendere le chiavi di comando uguali a GNOME Teminator)

La situazione: dopo aver diviso la finestra in 2 riquadri orizzontali, passando a un riquadro con Ctrl+ a Upfreccia, devo attendere un po '(2-3 secondi) per visualizzare i comandi della cronologia della shell in questo riquadro. Perché se premo di Upnuovo il tasto tornerà all'altro riquadro invece di mostrarmi un comando di cronologia della shell. Come posso rifiutare questo?


Un'alternativa potenzialmente utile è usare CTRL + B q, questo mostra i numeri delle finestre in tmux. Premendo CTRL + B q <numero> si accederà a quella finestra, su / giù saranno immediatamente disponibili. È necessario digitare il numero seguente q abbastanza rapidamente. C'è un timeout che controlla anche questo.
Spacen Jasset,

Risposte:


53

Su, Giù, Sinistra e Destra ( select-paneassociazioni; e Control- e Meta- degli stessi tasti per resize-pane) sono associazioni "ripetibili" per impostazione predefinita (create tramite bind-key -r). Dopo aver digitato la chiave prefisso e qualsiasi singola chiave ripetibile, è possibile digitare qualsiasi altra chiave ripetibile (senza dover digitare nuovamente il prefisso) entro il numero di millisecondi specificato tramite l' repeat-timeopzione di sessione (il valore predefinito è 500 ms).

È possibile esaminare il valore corrente di repeat-timecon questi comandi shell:

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

Se si desidera disabilitare la ripetizione per la sessione corrente, digitare il prefisso, i due punti e immettere questo comando:

set-option repeat-time 0

In alternativa, potresti essere in grado di trovare un valore diverso da zero. Se hai davvero un valore di circa 2000 (cioè 2s), indovino che è stato impostato /etc/tmux.conf.

Se si desidera disabilitare la ripetizione (o modificare il timeout) per tutte le sessioni, impostare il valore globale con questo comando:

set-option -g repeat-time 0

Se hai impostato un valore per sessione, dovrai disattivarlo prima che il valore globale abbia effetto in quella sessione ( set-option -u repeat-time). Potresti voler impostare il valore globale tramite il tuo .tmux.confse preferisci lasciarlo disattivato in modo "permanente".

Se hai solo problemi con Up, puoi ricollegarlo senza -r:

bind-key Up select-pane -U

4

Se lo desideri, puoi anche disattivare la ripetizione per specifiche combinazioni di tasti. Ad esempio, i collegamenti predefiniti per passare da un riquadro all'altro si riducono 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

Potresti ricrearli senza la -rbandiera, come

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, preferisco che il cambio di riquadro non sia ripetibile. La ripetizione è buona se hai una finestra divisa in molti piccoli riquadri, ma può portare a collisioni chiave (come hai descritto) con le applicazioni in esecuzione all'interno di quei riquadri (come cronologia shell, vim, ecc.), E io di solito non hanno comunque più di 2 riquadri per finestra. Ma a ciascuno il suo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.