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

相关内容