Problema de ligação de chave do tmux

8

Eu mudei de usar a tela um tempo atrás para usar o tmux. Eu tenho uma configuração tmux que usa a seqüência Ctrl+ da tela a, em vez do padrão Ctrl+ da tmux b.

No entanto, um problema encontrado é que, se eu pressionar ctrl-ae pressionar p na tela anterior, ou n na tela seguinte, sem soltar a tecla ctrl, o tmux ignorará a sequência de teclas. Se eu pressionar Ctrl+ a, solte o Ctrlbotão e, em seguida, pressione nou p, funcionará bem.

Alguma idéia sobre o que pode estar errado? Minha configuração é a seguinte:

# $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
fonte

Respostas:

7

Encontrei a solução para imitar o comportamento original na tela (incluindo apenas partes relevantes da configuração, pois o resto é apenas uma limpeza de janela):

# 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

Encadear diretamente a sequência chave foi a solução. Eu não sabia que era possível fazer isso, mas funciona perfeitamente, e ainda posso manter a opção de enviar prefixo (o que me preocupava era parte do problema).

Morgan Blackthorne
fonte
Eu acho que você pode sinalizar sua própria resposta como a solução, que ajudaria outras pessoas.
precisa saber é
Depois de usar as combinações de teclas padrão, defino as minhas um pouco diferentes: bind-key C-ne bind-key C-p. isso me permite continuar pressionando Ctrl.
SergioAraujo 16/01
2

O Tmux considera que qualquer pressionamento de tecla executado enquanto a tecla ctrl está pressionada está no formato C. Você pode simplesmente adicionar bind C-p preve bind C-n nextobter o mesmo efeito.

Alex L.
fonte
Obrigado, Alex, que me colocou no caminho certo. Eu não queria fazer ctrl-p e ctrl-n; Ainda administro algumas máquinas que não têm tmux e ainda uso a tela de tempos em tempos, então estava procurando por algo que se aproximava um pouco mais do comportamento original da tela. Mas seu comentário me colocou no que eu poderia fazer para corrigi-lo.
Morgan Blackthorne