Так что в основном мои 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. Это вставит буквальный символ escape, за которым последует остальная часть последовательности escape, которую отправляет клавиша. Например, вы можете увидеть ^[[4~
( ^[
в начале на самом деле является символом escape, за которым не ^
следует [
). Сделайте то же самое для других клавиш курсора, которые вы хотите перенастроить.
В вашем .kshrc
, установитеKEYBD ловушкадля перевода escape-последовательностей из функциональных клавиш в привязки для команд, которые вы хотите, чтобы клавиша вызывала. Например (вам может потребоваться настроить escape-последовательности — обратите внимание, что внутри $'…',
\e` означает escape-символ):
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