Korn Shell: As teclas End, pgup, pgdown e delete não funcionam

Korn Shell: As teclas End, pgup, pgdown e delete não funcionam

Então, basicamente, meus End, Pageup/ Pagedowne Deletechaves não estão funcionando no ksh93. A propósito, estou executando o FreeBSD.

Minhas teclas de seta estão funcionando, assim como minha tecla inicial.

Essas chaves funcionam quando coloco isso no meu.kshrc

set -o emacs

Eu tentei fazerESSE, colocando isso no meu .kshrc. Para fazer a Endchave funcionar.

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

Abri o vim, pressionei Ctrlve digitei 005. E eles ^Eapareceram. Ainda assim, nada funcionou.

Alguém sabe como fazer essas chaves funcionarem?

Além disso, sempre que pressiono essas teclas, ele imprime um arquivo ~. Também sei que poderia usar Ctrldou CtrlaNÃO quero usá-los.

Responder1

Essa respostaé específico para certos emuladores de terminal, não acho que possa ser generalizado fora do Solaris.

Em ksh, pressione Ctrl+ Ve depois End. Isso inserirá um caractere de escape literal seguido pelo restante da sequência de escape que a chave envia. Por exemplo, você pode ver ^[[4~(o ^[no início é na verdade um caractere de escape, não ^seguido por [). Faça o mesmo para as outras teclas do cursor que deseja reconfigurar.

No seu .kshrc, defina umArmadilha KEYBDpara traduzir as sequências de escape das teclas de função nas ligações dos comandos que você deseja que a tecla invoque. Por exemplo (talvez seja necessário ajustar as sequências de escape — observe que dentro de $'…',\e` significa um caractere de 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

informação relacionada