tmux / screen ctrl+arrow (左右) 在 SSH 上不起作用

tmux / screen ctrl+arrow (左右) 在 SSH 上不起作用

我已配置tmux为按 Ctrl+right / left 跳过单词:

set-window-option -g xterm-keys on

它运行得很好,但是当我使用 SSH 时,它不起作用并且打印;5D;5C..

我使用时也出现了同样的问题screen,SSH 上是否有一些特定的配置?tmuxscreen

答案1

不是 tmux 也不是 screen 会“跳过单词”;文本输入是由你的。因此,您必须找出 Ctrl+箭头键生成的键序列,并告诉您的 shell 它的意思是“跳过一个单词”。否则,它将停止解释中间序列,因为它无法识别。

如果您使用的是 bash,它会从 ncurses/terminfo 中获取一些关键定义,并从“inputrc”文件中获取其他定义。因此,首先确保您已安装 ncurses 终端定义(“ncurses-term”或类似定义)。如果您有自定义的~/.inputrc,请告诉它导入系统范围的定义,使用:

$include /etc/inputrc

如果这没有帮助,请向您的 ~/.inputrc 文件添加自定义映射(当然是在服务器上):

  1. 在 bash 中,按下CtrlV(“逐字输入”键),然后按下Ctrl。您将看到“Ctrl+right”转义序列作为纯文本插入:

    ^[[1;5C
    

    表示^[“ESC”字符;其余的是纯文本。所以这是ESC [ 1 ; 5 C

  2. 在 中man bash,找到用于跳过单词的 inputrc(“readline”)命令。(它是forward-word。)

  3. 在 中~/.inputrc,添加按键序列和命令。(“ESC” 写为\e。)

    "\e[1;5C": forward-word
    
  4. 对 重复相同操作Ctrl

  5. 关闭 ssh,然后重新连接,看看是否有效。

请注意,大多数分布中已经有这些特定的映射/etc/inputrc

相关内容