我的 ~/.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会发送BEL
ASCII 7。
你的Tab发送TAB
与Ctrl+相同的I字符。
你的Enter很可能发送CR
与Ctrl+相同的M字符。
您的Backspace…可以发送DEL
,但不能BS
。
无论如何,重点是tmux
Tab无法与Ctrl+区分开来,I因为它得到的输入是相同的。
或许您可以重新配置终端仿真器,使其在您按下 时发送另一个字符(或字符序列)Tab(当您按下Ctrl+时进行异或I);并调整所有相关工具的配置。即使如此,在我看来,这也不值得。不要与标准作对,只需选择另一种组合即可。