Korn Shell: End, pgup, pgdown ed il tasto Canc non funzionano


8

Quindi in pratica my End, Pageup/ Pagedowne Deletekey non funzionano in ksh93. A proposito, eseguo FreeBSD.

I miei tasti freccia funzionano, così come il mio tasto home.

Quelle chiavi funzionano quando lo inserisco nel mio .kshrc

set -o emacs

Ho provato a fare QUESTO , inserendolo nel mio .kshrc. Per far funzionare la Endchiave.

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

Ho aperto Vim, ho premuto Ctrlve digitato 005. E si ^Epresentò. Tuttavia, nulla ha funzionato.

Qualcuno sa comunque come far funzionare quelle chiavi?

Inoltre, ogni volta che premo quei tasti stampa a ~. So anche che potrei usare Ctrld, o Ctrla, NON voglio usare questi.

Risposte:


7

Questa risposta è specifica per alcuni emulatori di terminale, non penso che possa essere generalizzata al di fuori di Solaris.

In ksh, premi Ctrl+ Vquindi End. Ciò inserirà un carattere di escape letterale seguito dal resto della sequenza di escape che la chiave invia. Ad esempio, potresti vedere ^[[4~( ^[all'inizio è in realtà un carattere di escape, non ^seguito da [). Fare lo stesso per gli altri tasti cursore che si desidera riconfigurare.

Nel tuo .kshrc, imposta una trap KEYBD per tradurre le sequenze di escape dai tasti funzione nei collegamenti per i comandi che vuoi che il tasto invochi. Ad esempio (potrebbe essere necessario regolare le sequenze di escape - nota che dentro $'…',\ e` significa un carattere di 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

Grazie per l'aiuto. Ma ora sto ricevendo un errore che dice .kshrc: riga 6: errore di sintassi: ')' imprevisto
shix

Proprio dove si trova la chiave keybd_trap () {parte.
shix,

1
@shix Siamo spiacenti, c'era un errore di battitura (una parentesi extra su ogni riga del caso), risolto ora.
Gilles 'SO- smetti di essere malvagio' l'

Wow! Grazie mille. Ho avuto questo problema da un po 'di tempo.
shix,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.