所以基本上我的End、Pageup/Pagedown和Deletekey 在 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