Tmux-Schlüsselbindungsproblem

8

Ich habe vor einiger Zeit von der Verwendung des Bildschirms auf die Verwendung von tmux umgestellt. Ich habe eine tmux-Konfiguration, die die Ctrl+ aSequenz des Bildschirms anstelle der Standardsequenz Ctrl+ von tmux verwendet b.

Ein Problem, das ich festgestellt habe, ist jedoch, dass tmux die Tastenfolge ignoriert, wenn ich Strg-a drücke und dann p für den vorherigen Bildschirm oder n für den nächsten Bildschirm drücke, ohne die Strg-Taste loszulassen. Wenn ich Ctrl+ drücke, die Taste aloslasse Ctrlund dann noder drücke p, funktioniert es einwandfrei.

Irgendwelche Gedanken darüber, was falsch sein könnte? Meine Konfiguration lautet wie folgt:

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

Antworten:

7

Ich habe die Lösung gefunden, um das ursprüngliche Verhalten unter dem Bildschirm nachzuahmen (nur relevante Teile der Konfiguration einzuschließen, da der Rest nur eine Fensterdekoration ist):

# 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

Das direkte Verketten der Schlüsselsequenz war die Lösung. Ich wusste nicht, dass Sie das tatsächlich tun können, aber es funktioniert perfekt, und ich kann die Sendepräfix-Option (die ich als Teil des Problems befürchtet hatte) beibehalten.

Morgan Blackthorne
quelle
Ich denke, Sie können Ihre eigene Antwort als Lösung kennzeichnen, die anderen Menschen helfen würde.
Gitaarik
Sobald ich Standard-Tastenkombinationen verwendet habe, habe ich meine etwas anders eingestellt: bind-key C-nund bind-key C-p. Dadurch kann ich weiterhin Strg drücken.
SergioAraujo
2

Tmux betrachtet alle Tastendrücke, die ausgeführt werden, während die Strg-Taste gedrückt ist, als C-Form. Sie können jedoch einfach hinzufügen bind C-p prevund bind C-n nextden gleichen Effekt erzielen.

Alex L.
quelle
Danke, Alex, das hat mich auf den richtigen Weg gebracht. Ich wollte jedoch nicht Strg-P ​​und Strg-N machen; Ich verwalte immer noch einige Maschinen, die kein tmux haben, und ich benutze immer noch von Zeit zu Zeit den Bildschirm. Deshalb suchte ich nach etwas, das dem ursprünglichen Verhalten des Bildschirms etwas näher kam. Aber Ihr Kommentar brachte mich auf das, was ich tun könnte, um es richtig zu machen.
Morgan Blackthorne