即使没有 Tab 键的按键绑定,Tab 键也会在 tmux 中水平分割屏幕

即使没有 Tab 键的按键绑定,Tab 键也会在 tmux 中水平分割屏幕

我的 ~/.tmux.conf 中有以下配置

  1 unbind -a
  2 
  3 set -g prefix C-a
  4 unbind C-b
  5 bind C-a send-prefix
  6 
  7 set-option -g status-left-length 100
  8 setw -g mouse on
  9 
 10 # 0 is too far from ` ;)
 11 set -g base-index 1
 12 setw -g pane-base-index 1
 13 
 14 # Automatically set window title
 15 set-window-option -g automatic-rename on
 16 set-option -g set-titles on
 17 
 18 # Use Ctrl key to manage windows
 19 bind-key -n C-n new-window
 20 
 21 # Use Alt-arrow keys without prefix key to switch panes
 22 bind -n S-Left select-pane -L
 23 bind -n S-Right select-pane -R
 24 bind -n S-Up select-pane -U
 25 bind -n S-Down select-pane -D
 26 
 27 bind -n C-i split-window -h 
 28 bind -n C-h split-window -v
 29 
 30 # Use Ctrl-arrow to switch windows
 31 bind -n C-Left  previous-window
 32 bind -n C-Right next-window
 33 
 34 set-window-option -g mode-keys vi
 35 
 36 set-option -g history-limit 10000
 37 
 38 # Reload tmux config
 39 #bind r source-file ~/.tmux.conf
 40 

我实际上已经规划了Ctrl+i水平分割屏幕。但是,随着 的出现Ctrl+i,甚至Tab关键也是水平分割屏幕 - 这已经变得很麻烦,因为Tab将用于自动完成。

但是,如果注释掉以下几行 -

 27 bind -n C-i split-window -h 

那么我们就看不到这个问题了。

答案1

Ctrl+I发送制表符TAB,ASCII 9(十进制)。
Ctrl+J发送换行符LF,ASCII 10(十进制)。
Ctrl+M发送回车符CR,ASCII 13(十进制)。
Ctrl+H发送退格符BS,ASCII 8(十进制)。

注意:I 是英文字母表中的第 9 个字母,J 是第 10 个字母,M 是第 13 个字母,H 是第 8 个字母。这是设计使然。G 是第 7 个字母,因此预期Ctrl+G会发送BELASCII 7。

你的Tab发送TABCtrl+相同的I字符
你的Enter很可能发送CRCtrl+相同的M字符
您的Backspace…可以发送DEL,但不能BS

无论如何,重点是tmuxTab无法与Ctrl+区分开来,I因为它得到的输入是相同的。

或许您可以重新配置终端仿真器,使其在您按下 时发送另一个字符(或字符序列)Tab(当您按下Ctrl+时进行异或I);并调整所有相关工具的配置。即使如此,在我看来,这也不值得。不要与标准作对,只需选择另一种组合即可。

相关内容