Korn Shell: Las teclas Finalizar, Re Pág, Av Pág y Eliminar no funcionan

Korn Shell: Las teclas Finalizar, Re Pág, Av Pág y Eliminar no funcionan

Básicamente, mi clave End, Pageup/ Pagedowny Deleteno funcionan en ksh93. Por cierto, estoy ejecutando FreeBSD.

Mis teclas de flecha funcionan, al igual que mi tecla de inicio.

Esas llaves funcionan cuando pongo esto en mi.kshrc

set -o emacs

he intentado hacerESTE, al poner esto en mi .kshrc. Para que la Endllave funcione.

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

Abrí vim, presioné Ctrlvy escribí 005. Y ^Eapareció. Aún así, nada funcionó.

¿Alguien sabe cómo hacer que esas claves funcionen?

Además, cada vez que presiono esas teclas, se imprime un archivo ~. También sé que podría usarlos Ctrldo CtrlaNO quiero usarlos.

Respuesta1

esa respuestaes específico de ciertos emuladores de terminal, no creo que pueda generalizarse fuera de Solaris.

En ksh, presione Ctrl+ Vy luego End. Esto insertará un carácter de escape literal seguido del resto de la secuencia de escape que envía la clave. Por ejemplo, es posible que vea ^[[4~(el ^[al principio es de hecho un carácter de escape, no ^seguido de [). Haga lo mismo con las otras teclas de cursor que desee reconfigurar.

En tu .kshrc, establece untrampa KEYBDpara traducir las secuencias de escape de las teclas de función a los enlaces de los comandos que desea que invoque la tecla. Por ejemplo (es posible que necesites ajustar las secuencias de escape; ten en cuenta que dentro de $'…',\e` significa un carácter 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

información relacionada