我已经配置好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
...
ssh
当我在运行 tmux 的 PC 上时,这个功能可以正常工作,但当我在 PC 上使用时,这个功能不起作用MobaXterm
。
我认为这是因为我在电脑前时它可以工作,所以这表明 MobaXterm 设置存在问题 -我可以设置一些东西,以便ctrl
++在整个会话中以与通过直接连接的键盘相同的方式“识别”它们?shift
left/right arrow
MobaXterm
ssh
我已经尝试过接受的答案这个问题- 它不起作用。不过,那个问题并不完全相同:它是关于ctrl
+ 的arrow
,而不是ctrl
+ shift
+ arrow
,因此可能需要对那个被接受的答案进行一些轻微的调整,但这行的语法对我来说很难懂 - 我看不出它需要如何修改才能支持ctrl
+ shift
+arrow
而不是ctrl
+ arrow
(如果它是必需的)。
$ tmux -V
tmux 2.9a
答案1
如果您cat
在 MobaXterm 中运行 tmux 外部,然后按 CS-Left,您会看到什么?这与按 C-Left 或按没有任何修饰键的 Left 时有什么不同?
如果这三个都是不同的,你可以配置它们。如果没有,你只能配置唯一的。
您可以在终端覆盖中更改它们,kRIT5 是 C-Right,kLFT5 是 C-Left,kUP5 是 C-Up,kDN5 是 C-Down。对于 CS-Right,请使用 kRIT6、kLFT6 等。数字如下:
3 Alt
4 Shift + Alt
5 Control
6 Shift + Control
7 Alt + Control
8 Shift + Alt + Control
S-Left 是普通的 kLFT(没有数字),S-Right(kRIT)也是一样,等等。
因此对于 CS-Left,您需要 kLFT6、kRIT6、kUP6、kDN6。
例如对于 CS-Left 您可能会看到(您不会看到这个,因为如果您看到了它就会起作用,但这只是一个例子):
^[[1;6D
正如我上面所说,确保这是唯一的,许多终端不支持所有修饰符。
^[
是 Escape,因此它进入终端覆盖\E
。
terminal-overrides 是一组逗号分隔的条目。每个条目都是一个冒号分隔的功能列表。第一个是要匹配的模式TERM
。
您需要确保 MobaXterm 使用的不是TERM
本地计算机,否则您最终也会覆盖本地终端。如果两者都使用xterm
,请尝试制作 MobaXtermxterm-color
或其他东西,或者xterm
通过执行infocmp -x xterm >copy
然后编辑副本以更改开头的名称(之前的第二行|
)并使用再次安装来复制tic -x copy
。显然,您需要配置 MobaXterm 以将其设置为不同TERM
(或根据例如SSH_CONNECTION
或其他内容在您的 shell 配置文件中执行此操作)。
然后您可以像这样在终端覆盖中添加它们:
set -as terminal-overrides ',myxterm:kLFT6=\E[1;6D:kRIT6=\E[1;6C'
确保在更改 .tmux.conf 后完全重新启动 tmux,或者在从正在运行的 tmux 更改终端覆盖后分离并重新连接。