Problème de liaison de clé Tmux

8

Je suis passé d'un écran à un autre pour utiliser tmux. J'ai une configuration tmux qui utilise la séquence Ctrl+ de l'écran a, au lieu du Ctrl+ par défaut de tmux b.

Cependant, un problème que j'ai trouvé est que si j'appuie sur ctrl-a, puis sur p pour l'écran précédent, ou n pour l'écran suivant, sans relâcher la touche ctrl, tmux ignore la séquence de touches. Si j'appuie sur Ctrl+ a, relâchez le Ctrl, puis appuyez sur nou p, cela fonctionne correctement.

Avez-vous des réflexions sur ce qui pourrait être faux? Ma configuration est la suivante:

# $Id: t-williams.conf,v 1.1 2009/11/02 18:59:28 nicm Exp $
#
# ~/.tmux.conf - tmux terminal multiplexer config
# Thayer Williams (http://cinderwick.ca)
# "Feel free to do whatever you like with it."

# set prefix key to ctrl+a
unbind C-b
set -g prefix C-a

# send the prefix to client inside window (ala nested sessions)
bind-key a send-prefix

# toggle last window like screen
bind-key C-a last-window

# confirm before killing a window or the server
bind-key k confirm kill-window
bind-key K confirm kill-server

# toggle statusbar
bind-key b set-option status

# ctrl+left/right cycles thru windows
bind-key -n C-right next
bind-key -n C-left prev

# open a man page in new window
bind / command-prompt "split-window 'exec man %%'"

# switch split window keys
unbind %
bind | split-window -h
bind - split-window -v

# quick view of processes
bind '~' split-window "exec htop"

# scrollback buffer n lines
set -g history-limit 10000

# listen for activity on all windows
#set -g bell-action any
setw -g monitor-activity off
set -g visual-activity off

# on-screen time for display-panes in ms
set -g display-panes-time 2000

# start window indexing at one instead of zero
set -g base-index 1

# enable wm window titles
set -g set-titles on

# Automatically set window title
setw -g automatic-rename

# statusbar --------------------------------------------------------------

set -g display-time 2000

# default statusbar colors
set -g status-fg white
set -g status-bg cyan
set -g status-attr default

# default window title colors
set-window-option -g window-status-fg black
set-window-option -g window-status-bg cyan
set-window-option -g window-status-attr default

# active window title colors
set-window-option -g window-status-current-fg white
set-window-option -g window-status-current-bg black
set-window-option -g window-status-current-attr bright

# command/message line colors
set -g message-fg blue
set -g message-bg white
set -g message-attr dim

# center align the window list
set -g status-justify centre

# show some useful 
set -g status-left "[#[fg=black]#H#(uptime | cut -d ',' -f 3- | sed -e 's/ load average: //' | sed -e 's/  / /g')#[default]]"
set -g status-left-length 50
set -g status-right "[#[fg=black]%a %Y-%m-%d %H:%M#[default]]"
set -g status-right-length 50

set -g default-terminal "screen"
Morgan Blackthorne
la source

Réponses:

7

J'ai trouvé la solution pour imiter le comportement d'origine sous écran (en n'incluant que les parties pertinentes de la config car le reste est juste de l'habillage de fenêtre):

# set prefix key to ctrl+a until I have time to adapt
unbind C-b
set -g prefix C-a

# send the prefix to client inside window (ala nested sessions)
bind-key a send-prefix

# toggle last window like screen
bind-key C-a last-window

# navigate through windows like screen
bind-key C-a-n next
bind-key C-a-p prev

Enchaîner directement la séquence de touches était la solution. Je ne savais pas que vous pouviez réellement le faire, mais cela fonctionne parfaitement, et je peux toujours conserver l'option d'envoi de préfixe (ce qui m'inquiétait faisait partie du problème).

Morgan Blackthorne
la source
Je pense que vous pouvez signaler votre propre réponse comme la solution, qui aiderait d'autres personnes.
gitaarik
Une fois que j'utilise les raccourcis clavier par défaut, je mets un peu différent le mien: bind-key C-net bind-key C-p. cela me permet de continuer à appuyer sur Ctrl.
SergioAraujo
2

Tmux considère que toute pression sur une touche effectuée pendant que la touche ctrl est enfoncée est de la forme C. Vous pouvez simplement ajouter bind C-p prevet bind C-n nextobtenir le même effet.

Alex L.
la source
Merci, Alex, cela m'a mis sur la bonne voie. Je ne voulais pas faire ctrl-p et ctrl-n, cependant; J'administre toujours des machines qui n'ont pas tmux et j'utilise toujours screen de temps en temps, donc je cherchais quelque chose qui allait un peu plus près du comportement original de screen. Mais votre commentaire m'a mis sur ce que je pouvais faire pour le corriger.
Morgan Blackthorne