在 PuTTY 和屏幕上使用 ctrl-箭头键

kbo*_*sak 37 bash putty gnu-screen

我搜索过,但在任何地方都找不到解决方案。我正在使用 Windows 中的 PuTTY 连接到运行 bash 和 screen 的各种服务器。bash 似乎可以使用 ctrl-arrow 键在命令行上逐字跳转,但在屏幕内它不起作用。不在屏幕中,ctrl-left 发送“^[OC”,ctrl-right 是“^[OD”。在屏幕中,我得到了“^[[C”和“^[[D”,这似乎只是左/右箭头键。有没有办法让屏幕在使用 PuTTY 时识别 ctrl 箭头键?(仅供参考,我不记得在 linux 中使用 gnu-terminal 而不是 PuTTY 时有这个问题)。

更新:看来 PuTTY 是问题所在,因为它没有发送使其工作所需的转义码。我现在放弃并使用 Cygwin+mintty。

小智 28

正如这里提到的,你可以输入 ~/.inputrc:

"\eOD": backward-word
"\eOC": forward-word
Run Code Online (Sandbox Code Playgroud)

它对我有用。

  • 这对我有用并且比接受的答案容易得多。 (5认同)
  • 确保在你的 `.inputrc` 文件的顶部有 `$include /etc/inputrc`,否则 readline 不会读取系统范围的绑定,并且 Home 和 End 等键会​​中断。 (4认同)

Den*_*son 14

编辑:

以下是对我有用的内容:

  • 我的~/.bashrc设置TERM=xterm(我的恰好是TERM=xterm-256colors)覆盖屏幕的TERM=screen
  • 我将PuTTY > Terminal > Features > Disable Application cursor keys mode 设置选中
  • tput smkx在 Bash 提示符下输入
  • 现在 Ctrl-箭头键逐字跳转

  • 仅供参考,如果我这样做:
    tput smkx | hexdump -c
    我得到
    0000000 033 [ ? 1 h 033 =

    tput rmkx | hexdump -c
    给我
    0000000 033 [ ? 1 l 033 >

我认为有一种方法可以将它改造成更好的东西,但这是我到目前为止所得到的并且似乎有效。

原答案:

来自info screen

“屏幕”会话中的每个窗口都模拟一个 VT100 终端,并添加了一些额外的功能。VT100 仿真器是硬编码的,无法仿真其他终端类型。

VT100 没有 Ctrl-箭头键码。