我已配置tmux
为按 Ctrl+right / left 跳过单词:
set-window-option -g xterm-keys on
它运行得很好,但是当我使用 SSH 时,它不起作用并且打印;5D
或;5C
..
我使用时也出现了同样的问题screen
,SSH 上是否有一些特定的配置?tmux
screen
答案1
不是 tmux 也不是 screen 会“跳过单词”;文本输入是由你的壳。因此,您必须找出 Ctrl+箭头键生成的键序列,并告诉您的 shell 它的意思是“跳过一个单词”。否则,它将停止解释中间序列,因为它无法识别。
如果您使用的是 bash,它会从 ncurses/terminfo 中获取一些关键定义,并从“inputrc”文件中获取其他定义。因此,首先确保您已安装 ncurses 终端定义(“ncurses-term”或类似定义)。如果您有自定义的~/.inputrc
,请告诉它导入系统范围的定义,使用:
$include /etc/inputrc
如果这没有帮助,请向您的 ~/.inputrc 文件添加自定义映射(当然是在服务器上):
在 bash 中,按下CtrlV(“逐字输入”键),然后按下Ctrl→。您将看到“Ctrl+right”转义序列作为纯文本插入:
^[[1;5C
表示
^[
“ESC”字符;其余的是纯文本。所以这是ESC [ 1 ; 5 C
。在 中
man bash
,找到用于跳过单词的 inputrc(“readline”)命令。(它是forward-word
。)在 中
~/.inputrc
,添加按键序列和命令。(“ESC” 写为\e
。)"\e[1;5C": forward-word
对 重复相同操作Ctrl←。
关闭 ssh,然后重新连接,看看是否有效。
请注意,大多数分布中已经有这些特定的映射/etc/inputrc
。