我已经进行了配置tmux
,以便ctrl
++在它们的数字排列中向左/向右移动窗口shift
。left/right arrow
IE:
# ~/.tmux.conf
...
bind-key -n C-S-Left swap-window -t -1
bind-key -n C-S-Right swap-window -t +1
...
当我在运行 tmux 的 PC 上时,这可以正常工作,但当我ssh
使用MobaXterm
.
我假设因为这在我物理上在 PC 上时有效,这表明 MobaXterm 设置存在问题 - 我可以设置一些东西,以便ctrl
++在的会话中以shift
与直接通过会话left/right arrow
相同的方式“识别” - 连接键盘?MobaXterm
ssh
我已经尝试了这个问题的公认答案- 它没有用。不过,这个问题并不完全相同:它是关于+ ctrl
,arrow
而不是ctrl
++ ,所以可能需要对这个公认的答案进行一些细微的调整,但该行的语法对我来说是迟钝的 - 我看不出它需要什么被修改为支持+ +而不是+ (如果它甚至是需要的)。shift
arrow
ctrl
shift
arrow
ctrl
arrow
$ tmux -V
tmux 2.9a
如果你
cat
在 MobaXterm 外运行 tmux,然后按 CS-Left,你会看到什么?与您按 C-Left 或在没有任何修饰键的情况下按 Left 时有什么不同?如果这三个都不同,您可以配置它们。如果不是,您只能配置唯一的。
您可以在终端覆盖中更改它们,kRIT5 是 C-Right,kLFT5 是 C-Left,kUP5 是 C-Up,kDN5 是 C-Down。对于 CS-Right,使用 kRIT6、kLFT6 等。数字是:
S-Left 是普通的 kLFT - 没有数字 - 与 S-Right (kRIT) 等相同。
所以对于 CS-Left,你需要 kLFT6、kRIT6、kUP6、kDN6。
例如对于 CS-Left 你可能会看到(你不会看到这个,因为如果你这样做了它会起作用,但这是一个例子):
正如我上面所说,确保这是唯一的,许多终端不支持所有修饰符。
^[
是 Escape,所以它作为\E
.terminal-overrides 是一组逗号分隔的条目。每个条目都是以冒号分隔的功能列表。第一个是匹配的模式
TERM
。您需要确保 MobaXterm 使用的
TERM
计算机与您的本地计算机不同,否则您最终也会覆盖本地终端。如果两者都在使用xterm
,请尝试制作 MobaXtermxterm-color
或其他东西,或者xterm
通过复制infocmp -x xterm >copy
然后编辑副本以更改开头的名称(在 之前的第二行|
)并使用tic -x copy
. 显然,您将需要配置 MobaXterm 以设置不同的设置TERM
(或基于例如SSH_CONNECTION
或其他东西在您的 shell 配置文件中进行设置)。然后您可以将它们添加到终端覆盖中,如下所示:
确保在更改 .tmux.conf 后完全重新启动 tmux,或者在从正在运行的 tmux 更改终端覆盖后分离并重新连接。