如何在 GNU 畫面中綁定「tab」和「shift+tab」?

如何在 GNU 畫面中綁定「tab」和「shift+tab」?

如何綁定按鍵TabShiftTab螢幕?我的問題是我不知道將什麼傳遞給螢幕bind命令來指定這些擊鍵。

順便說一句,我知道GNU 螢幕:在區域之間移動但答案並不存在。

以下所有操作均失敗並出現錯誤-X: bind: character, ^x, or (octal) \032 expected

screen -X bind "\033[Z" focus up
screen -X bind "^[[Z" focus up
screen -X bind "\t" focus up
screen -X bind \033[Z focus up
screen -X bind ^[[Z focus up
screen -X bind \t focus up

如果我點擊CtrlA:輸入命令,也會發生同樣的情況。

答案1

bindkey與使用 指定字元序列相反,bind唯一的方法是使用bind -k CAPCAP 是termcap關鍵功能的地方。

例如,

bind -k ku focus up

Up用於綁定發送到的字元序列focus up。對於後台選項卡,應該是:

bind -k kB focus up

不幸的是,由於某種原因,它看起來不起作用。不知道為什麼。我的第一個解釋是錯的。聽起來這與ncurses未正確處理 termcap 等價物有關kcbt

$ infocmp -1 | grep Z
    cbt=\E[Z,
    kcbt=\E[Z,
$ infocmp -1C | grep Z
    :bt=\E[Z:\

(kcbt 未翻譯為 kB)。

如果我添加到我的~/.screenrc

 termcapinfo * kr=\E[Z
 bind -k kr focus up

也就是說,如果我告訴screen你,無論主持人終端 ( *)、F63( kr) 發送\E[Z,並綁定F63focus up,然後就可以了。但請注意,按Shift+Tabnow 會發送螢幕內 \EOC,這是終端模擬器顯示的字元序列螢幕實現(與主機終端相對)發送F63

答案2

bindkey -k kB stuff ^[OZ
bind -k kB focus up

Ctrl就我而言,問題是當我按+ A- Shift+時插入的字串Tab位於+^[[Z之後,翻譯為CtrlA

  • ^[進入複製/回滾模式
  • [中止
  • 然後顯示Z

即標準 VT100 樣式轉義字元序列與複製/回滾模式字元序列發生衝突。因此,我為 backtab termcap 名稱添加了一個鍵綁定,以更改按+kB時插入輸入緩衝區中的字串。ShiftTab^[OB

請參閱螢幕手冊頁中的「輸入翻譯」部分。

相關內容