Korn Shell: End-, Pgup-, Pgdown- und Löschtaste funktionieren nicht

8

Grundsätzlich funktionieren mein End, Pageup/ Pagedownund mein DeleteSchlüssel in ksh93 nicht. Ich verwende übrigens FreeBSD.

Meine Pfeiltasten funktionieren, ebenso wie meine Home-Taste.

Diese Schlüssel funktionieren, wenn ich sie in meine stecke .kshrc

set -o emacs

Ich habe versucht zu tun DIES , indem sie diese in meinem .kshrc. Damit der EndSchlüssel funktioniert.

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

Ich öffnete vim und drückte Ctrlvund tippte 005. Und das ^Etauchte auf. Trotzdem funktionierte nichts.

Weiß jemand überhaupt, wie man diesen Schlüssel zum Laufen bringt?

Wenn ich diese Tasten drücke, wird a ~. Ich weiß auch, dass ich diese verwenden könnte Ctrldoder Ctrlamöchte.

shix
quelle

Antworten:

7

Diese Antwort ist spezifisch für bestimmte Terminalemulatoren. Ich glaube nicht, dass sie außerhalb von Solaris verallgemeinert werden kann.

Drücken Sie in ksh dann Ctrl+ . Dadurch wird ein wörtliches Escape-Zeichen eingefügt, gefolgt vom Rest der Escape-Sequenz, die der Schlüssel sendet. Zum Beispiel könnten Sie sehen (das am Anfang ist tatsächlich ein Escape-Zeichen, nicht gefolgt von ). Machen Sie dasselbe für die anderen Cursortasten, die Sie neu konfigurieren möchten.VEnd^[[4~^[^[

Stellen Sie in Ihrem .kshrceine KEYBD-Trap ein , um die Escape-Sequenzen von den Funktionstasten in die Bindungen für die Befehle zu übersetzen, die die Taste aufrufen soll. Zum Beispiel (möglicherweise müssen Sie die Escape-Sequenzen anpassen - beachten Sie, dass inside $'…',\ e` ein Escape-Zeichen bedeutet):

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 - hör auf böse zu sein'
quelle
Danke für die Hilfe. Aber jetzt erhalte ich einen Fehler, der besagt .kshrc: Zeile 6: Syntaxfehler: ')' unerwartet
Shix
Genau dort, wo sich der keybd_trap () {Teil befindet.
Shix
1
@shix Entschuldigung, es gab einen Tippfehler (eine zusätzliche Klammer in jeder Fallzeile), der jetzt behoben wurde.
Gilles 'SO - hör auf böse zu sein'
Beeindruckend! Ich danke dir sehr. Ich habe dieses Problem jetzt für eine Weile.
Shix