Bash

在 PuTTY 和螢幕上使用 ctrl-箭頭鍵

  • February 27, 2020

我搜尋並無法在任何地方找到解決方案。我正在使用 Windows 中的 PuTTY 連接到執行 bash 和 screen 的各種伺服器。似乎 bash 可以使用 ctrl-箭頭鍵在命令行上逐字跳轉,但在螢幕內它不起作用。不在螢幕中,ctrl-left 發送“^[OC 和 ctrl-right 是”^[OD”。在螢幕中,我得到“^[[C”和“^[[D”,這似乎只是程式碼左/右箭頭鍵。有沒有辦法讓螢幕在使用 PuTTY 時辨識 ctrl-箭頭鍵?(僅供參考,我不記得在 linux 中使用 gnu-terminal 而不是 PuTTY 時遇到這個問題)。

更新:看來 PuTTY 是問題所在,因為它沒有發送此工作所必需的轉義碼。我現在放棄並使用 Cygwin+mintty。

編輯:

這對我有用:

  • 我的~/.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-Arrow 鍵碼。

引用自:https://serverfault.com/questions/130128