Comment réduire le délai d'attente entre la clé de préfixe et la touche de commande dans tmux?

45

Mon ~/.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

(pour que les clés de commande soient identiques à celles de GNOME Teminator)

La situation: après avoir scindé horizontalement la fenêtre en 2 volets et basculé sur un volet avec une flèche Ctrl+ a Up, je dois attendre un moment (2 à 3 secondes) pour afficher les commandes de l’historique du shell dans ce volet. Si j'appuie de Upnouveau sur cette touche , vous revenez à l'autre volet au lieu de me montrer une commande d'historique du shell. Comment puis-je refuser cela?

quanta
la source
Une alternative potentiellement utile est d'utiliser CTRL + B q, cela montre les numéros de fenêtre dans tmux. Appuyez sur CTRL + B q <numéro> pour accéder à cette fenêtre. Haut / bas sera disponible immédiatement. Vous devez taper le nombre suivant q assez rapidement. Il y a un délai d'attente contrôlant cela aussi.
Spacen Jasset

Réponses:

53

Haut, Bas, Gauche et Droite ( select-paneliaisons; et Control- et méta des mêmes touches pour resize-pane) sont des liaisons «répétables» par défaut (effectuées via bind-key -r). Après avoir tapé la clé de préfixe et une seule clé répétable, vous pouvez taper toute autre clé répétable (sans avoir à taper à nouveau le préfixe) dans le nombre de millisecondes spécifié via le paramètrerepeat-time option de session (la valeur par défaut est 500 ms).

Vous pouvez examiner la valeur actuelle de repeat-timeavec ces commandes shell:

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

Si vous souhaitez désactiver la répétition pour la session en cours, tapez votre préfixe, deux points, puis entrez la commande suivante:

set-option repeat-time 0

Ou bien, vous pourrez peut-être trouver une valeur confortable non nulle. Si vous avez vraiment une valeur d’environ 2000 (c.-à-d. 2s), alors je suppose que cela est en cours/etc/tmux.conf .

Si vous souhaitez désactiver la répétition (ou modifier le délai) pour toutes vos sessions, définissez la valeur globale à l'aide de cette commande:

set-option -g repeat-time 0

Si vous avez défini une valeur par session, vous devez la désélectionner avant que la valeur globale ne prenne effet dans cette session ( set-option -u repeat-time). Vous .tmux.confvoudrez peut-être définir la valeur globale via votre si vous préférez le laisser «en permanence».

Si vous n’avez que des problèmes avec Up, vous pouvez le réassocier sans -r:

bind-key Up select-pane -U
Chris Johnsen
la source
4

Vous pouvez également désactiver la répétition pour des combinaisons de touches spécifiques, si vous le souhaitez. Par exemple, les liaisons par défaut permettant de basculer entre les volets se réduisent à:

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

Vous pouvez les recréer sans le -rdrapeau, comme

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

Personnellement, je préfère que le changement de volet ne soit pas répétable. Répéter est agréable si vous avez une fenêtre divisée en plusieurs petits volets, mais cela peut entraîner des collisions importantes (comme vous l'avez décrit) avec les applications qui s'exécutent dans ces volets (comme l'historique du shell, vim, etc.) et I n’ont généralement pas plus de 2 vitres par fenêtre. Mais a chacun le sien.

ivan
la source