所以基本上我的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