Korn Shell:End、pgup、pgdown 和刪除鍵不起作用

Korn Shell:End、pgup、pgdown 和刪除鍵不起作用

所以基本上我的EndPageup/PagedownDeletekey 在 ksh93 中不起作用。順便說一句,我正在運行 FreeBSD。

我的箭頭鍵可以使用,主頁鍵也可以使用。

當我把它放進我的電腦時,這些按鍵就可以工作了.kshrc

set -o emacs

我試過做,通過將其放入我的.kshrc.使End關鍵發揮作用。

alias __Y=`echo "\005"`     # end = ^e = end of line

我打開 vim,按下Ctrlv,然後輸入005。然後^E出現了。然而,仍然沒有任何效果。

有人知道如何讓這些鑰匙發揮作用嗎?

另外,每當我按下這些鍵時,它都會列印出一個~.我也知道我可以使用Ctrld,或者Ctrla,我不想使用這些。

答案1

那個答案特定於某些終端模擬器,我認為它不能在 Solaris 之外推廣。

在 ksh 中,按Ctrl+ ,V然後按End。這將插入一個文字轉義字符,後面跟著按鍵發送的轉義序列的其餘部分。例如,您可能會看到^[[4~^[開頭的 the 實際上是轉義字符,^後面不是[)。對要重新配置的其他遊標鍵執行相同的操作。

在你的中.kshrc,設定一個KEYBD陷阱將功能鍵中的轉義序列轉換為您希望該鍵呼叫的命令的綁定。例如(您可能需要調整轉義序列 - 請注意,裡面的$'…',\e` 表示轉義字元):

keybd_trap () {
  case ${.sh.edchar} in
    $'\e[1~') .sh.edchar=$'\001';; # Home = beginning-of-line
    $'\e[4~') .sh.edchar=$'\005';; # End = end-of-line
    $'\e[5~') .sh.edchar=$'\e>';; # PgUp = history-previous
    $'\e[6~') .sh.edchar=$'\e<';; # PgDn = history-next
    $'\e[3~') .sh.edchar=$'\004';; # Delete = delete-char
  esac
}
trap keybd_trap KEYBD
set -o emacs

相關內容