Shell

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

  • February 9, 2018

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

我的方向鍵正常工作,我的 home 鍵也正常工作。

當我把它放在我的.kshrc

set -o emacs

我試過這樣做把它放在我的.kshrc. 使End關鍵工作。

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

我打開 vim,按下Ctrl``v,然後輸入0``0``5。並且^E出現了。不過,沒有任何效果。

無論如何,任何人都知道要讓這些鑰匙工作嗎?

此外,當我按下這些鍵時,它會列印出一個~. 我也知道我可以使用Ctrl``d,或者Ctrl``a,我不想使用這些。

該答案特定於某些終端仿真器,我認為它不能在 Solaris 之外推廣。

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

在您的 KEYBD 中.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

引用自:https://unix.stackexchange.com/questions/42753