Problema di associazione chiave di Tmux


8

Sono passato dall'uso dello schermo qualche tempo fa all'utilizzo di tmux. Ho una configurazione di tmux che utilizza la sequenza Ctrl+ dello schermo a, anziché il valore predefinito Ctrl+ di tmux b.

Tuttavia, un problema che ho riscontrato è che se premo ctrl-a e poi premo p per la schermata precedente, o n per la schermata successiva, senza rilasciare il tasto ctrl, tmux ignora la sequenza di tasti. Se premo Ctrl+ a, rilasciare Ctrl, quindi premere no p, funziona correttamente.

Qualche idea su cosa potrebbe essere sbagliato? La mia configurazione è la seguente:

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

Risposte:


7

Ho trovato la soluzione per imitare il comportamento originale sotto lo schermo (includendo solo le parti rilevanti della configurazione in quanto il resto è solo una vetrina):

# 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

Concatenare direttamente la sequenza chiave era la soluzione. Non mi ero reso conto che potevi davvero farlo, ma funziona perfettamente, e posso ancora mantenere l'opzione send-prefix (che mi preoccupava era parte del problema).


Penso che puoi contrassegnare la tua risposta come soluzione, che aiuterebbe le altre persone.
Gitaarik,

Una volta che utilizzo le combinazioni di tasti predefinite, le mie impostazioni sono leggermente diverse: bind-key C-ne bind-key C-p. mi permette di continuare a premere Ctrl.
SergioAraujo,

2

Tmux considera tutte le pressioni di tasti eseguite mentre il tasto ctrl è premuto in forma di C. Potresti semplicemente aggiungere bind C-p preve bind C-n nextottenere lo stesso effetto però.


Grazie Alex, mi hai messo sulla strada giusta. Non volevo fare ctrl-p e ctrl-n, però; Gestisco ancora alcune macchine che non hanno tmux e di tanto in tanto uso lo schermo, quindi stavo cercando qualcosa che si avvicinasse un po 'di più al comportamento originale dello schermo. Ma il tuo commento mi ha fatto capire cosa avrei potuto fare per farlo correttamente.
Morgan Blackthorne,
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.