Korn Shell: Fin, pgup, pgdown y eliminar clave no funcionan

8

Así que básicamente mi End, Pageup/ Pagedown, y la Deleteclave no funcionan en ksh93. Estoy ejecutando FreeBSD por cierto.

Mis teclas de flecha funcionan y también mi tecla de inicio.

Esas teclas funcionan cuando pongo esto en mi .kshrc

set -o emacs

He intentado hacer ESTO , poniendo esto en mi .kshrc. Hacer que la Endllave funcione.

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

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

¿Alguien sabe de todos modos para obtener esas claves para trabajar?

Además, cada vez que presiono esas teclas imprime a ~. También sé que podría usar Ctrld, o CtrlaNO quiero usarlos.

shix
fuente

Respuestas:

7

Esa respuesta es específica para ciertos emuladores de terminal, no creo que pueda generalizarse fuera de Solaris.

En ksh, presione Ctrl+ y Vluego End. Esto insertará un carácter de escape literal seguido del resto de la secuencia de escape que envía la clave. Por ejemplo, puede ver ^[[4~(el ^[principio es, de hecho, un carácter de escape, no ^seguido de [). Haga lo mismo para las otras teclas de cursor que desea reconfigurar.

En su .kshrc, configure una trampa KEYBD para traducir las secuencias de escape de las teclas de función a los enlaces para los comandos que desea que invoque la tecla. Por ejemplo (es posible que deba ajustar las secuencias de escape; tenga 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
Gilles 'SO- deja de ser malvado'
fuente
Gracias por la ayuda. Pero ahora recibo un error que dice .kshrc: línea 6: error de sintaxis: ')' inesperado
shix
Justo donde está la parte keybd_trap () {.
shix
1
@shix Lo sentimos, había un error tipográfico (un paréntesis adicional en cada línea de caso), corregido ahora.
Gilles 'SO- deja de ser malvado'
¡Guauu! Muchas gracias. He tenido este problema por un tiempo ahora.
shix