Problema de vinculación de teclas tmux

8

He pasado de usar la pantalla hace un tiempo a usar tmux. Tengo una configuración de tmux que usa la secuencia Ctrl+ de la pantalla a, en lugar del valor predeterminado Ctrl+ de tmux b.

Sin embargo, un problema que he encontrado es que si presiono ctrl-a y luego presiono p para la pantalla anterior, o n para la siguiente pantalla, sin soltar la tecla ctrl, tmux ignora la secuencia de teclas. Si presiono Ctrl+ a, suelto Ctrl, y luego presiono no p, funciona bien.

¿Alguna idea sobre lo que podría estar mal? Mi configuración es la siguiente:

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

Respuestas:

7

Encontré la solución para imitar el comportamiento original debajo de la pantalla (solo incluye partes relevantes de la configuración ya que el resto es solo un escaparate):

# 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

Encadenar juntos la secuencia de teclas directamente fue la solución. No me di cuenta de que realmente podrías hacer eso, pero funciona perfectamente, y todavía puedo mantener la opción de enviar prefijo (lo que me preocupaba era parte del problema).

Morgan Blackthorne
fuente
Creo que puede marcar su propia respuesta como la solución, eso ayudaría a otras personas.
gitaarik
Una vez que utilizo combinaciones de teclas predeterminadas Yo la mía un poco diferente bits: bind-key C-ny bind-key C-p. me permite seguir presionando Ctrl.
SergioAraujo
2

Tmux considera que cualquier pulsación de tecla realizada mientras la tecla ctrl está fuera de la forma C. Sin embargo, podría simplemente agregar bind C-p prevy bind C-n nextobtener el mismo efecto.

Alex L.
fuente
Gracias, Alex, eso me puso en el camino correcto. Sin embargo, no quería hacer ctrl-p y ctrl-n; Todavía administro algunas máquinas que no tienen tmux y todavía uso la pantalla de vez en cuando, así que estaba buscando algo que se acercara un poco más al comportamiento original de la pantalla. Pero su comentario me puso en lo que podría hacer para hacerlo correcto.
Morgan Blackthorne