Masalah pengikatan kunci Tmux

8

Saya sudah beralih dari menggunakan layar beberapa waktu lalu kembali ke menggunakan tmux. Saya memiliki konfigurasi tmux yang menggunakan urutan layar Ctrl+ a, alih-alih tmux default Ctrl+ b.

Namun, satu masalah yang saya temukan adalah jika saya menekan ctrl-a dan kemudian menekan p untuk layar sebelumnya, atau n untuk layar berikutnya, tanpa melepaskan kunci ctrl, tmux mengabaikan urutan tombol. Jika saya menekan Ctrl+ a, lepaskan Ctrl, lalu tekan natau p, itu berfungsi dengan baik.

Adakah pemikiran tentang apa yang mungkin salah? Konfigurasi saya adalah sebagai berikut:

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

Jawaban:

7

Saya menemukan solusi untuk meniru perilaku asli di bawah layar (hanya termasuk bagian yang relevan dari konfigurasi karena sisanya hanya ganti jendela):

# 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

Merangkai urutan kunci secara langsung adalah solusinya. Saya tidak menyadari bahwa Anda benar-benar bisa melakukan itu, tetapi berfungsi dengan baik, dan saya masih bisa menyimpan opsi send-prefix (yang saya khawatirkan adalah bagian dari masalah).

Morgan Blackthorne
sumber
Saya pikir Anda dapat menandai jawaban Anda sendiri sebagai solusinya, yang akan membantu orang lain.
gitaarik
Setelah saya menggunakan keybindings default saya mengatur tambang saya sedikit berbeda: bind-key C-ndan bind-key C-p. itu memungkinkan saya untuk terus menekan Ctrl.
SergioAraujo
2

Tmux menganggap penekanan tombol apa pun dilakukan saat tombol ctrl turun menjadi bentuk-C. Anda bisa menambahkan bind C-p prevdan bind C-n nextmendapatkan efek yang sama.

Alex L.
sumber
Terima kasih, Alex, itu menempatkan saya di jalur yang benar. Saya tidak ingin melakukan ctrl-p dan ctrl-n; Saya masih admin beberapa mesin yang tidak memiliki tmux dan saya masih menggunakan layar dari waktu ke waktu, jadi saya sedang mencari sesuatu yang sedikit lebih dekat dengan perilaku asli layar. Tetapi komentar Anda memberi saya apa yang bisa saya lakukan untuk memperbaikinya.
Morgan Blackthorne