Korn Shell:结束,pgup,pgdown和删除键不起作用


8

所以基本上我EndPageup/ PagedownDelete关键不在ksh93的工作。顺便说一下,我正在运行FreeBSD。

我的箭头键正常工作,我的home键也正常工作。

当我把它放在我的那些键 .kshrc

set -o emacs

我已尝试通过将此操作放入我的计算机中来执行此操作.kshrc。使End关键工作。

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

我打开vim,然后按Ctrlv并输入005。并且^E出现了。仍然没有任何效果。

任何人都知道要获得那些关键工作吗?

另外,每当我按这些键时,它都会打印出一个~。我也知道我可以使用CtrldCtrla,但我不想使用这些。

Answers:


7

这个答案是特定于某些终端仿真器的,我认为它不能在Solaris之外推广。

在ksh中,按Ctrl+,V然后按End。这将插入原义转义字符,然后插入密钥发送的其余转义序列。例如,您可能会看到^[[4~^[开始时实际上是转义字符,而不是^之后[)。对要重新配置的其他光标键执行相同的操作。

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

感谢您的帮助。但是现在我得到一个错误,该错误说.kshrc:第6行:语法错误:')'意外
shix 2012年

在keybd_trap(){部分所在的位置。
shix 2012年

1
@shix抱歉,现在有一个错字(每个案例行都有一个括号)。
吉尔斯(Gillles)“所以-别再邪恶了”

哇!非常感谢。我已经有一段时间了这个问题。
shix 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.