AIX: Abrufen des vorherigen Befehls mit dem Aufwärtspfeil

9098
ring bearer

Ich kenne die Kombinationen von Set -o vi und k und j. Ich möchte diese auf den Aufwärts- und Abwärtspfeil abbilden, so dass ich AIX (ksh-Eingabeaufforderung) genauso wie bash verwenden kann. Irgendwelche Vorschläge?

1

2 Antworten auf die Frage

2
ring bearer

Eine Methode, die für mich funktioniert hat: Fügen Sie Folgendes in das .profile-Skript ein

set -o emacs alias __A=$(print -n "\020") alias __B=$(print -n "\016") alias __C=$(print -n "\006") alias __D=$(print -n "\002") 
1
Dennis Williamson

Möglicherweise können Sie ein Signal trapauf das KEYBDSignal schreiben, das die Pfeiltasten verarbeitet vi kund jan deren Stelle die Tasten und ausgibt.

Sie können herausfinden, welche Zeichen von Ihren Pfeiltasten ausgegeben werden, indem Sie Strg-v und dann die Taste drücken. Sie sollten so etwas sehen ^[[A.

Zum Beispiel:

f () { if [[ ${.sh.edchar} == $'\033[A' ]]; then .sh.edchar="k"; fi; } trap f KEYBD 

Testen Sie die .sh.edmodeVariable, um zu steuern, ob der Schlüssel im Einfüge- oder Befehlsmodus ersetzt wird (sein Wert wird 0x1bim Einfügemodus sein und andernfalls Null.

Danke für den Vorschlag, aber es funktioniert nicht wie erwartet. Ich habe diese zu .profile hinzugefügt und nichts passiert. ring bearer vor 13 Jahren 0
@ring-Bearer: Bei einer ksh-Eingabeaufforderung im Einfügemodus (im `vi`-Modus) oder im Emacs-Modus drücken Sie Strg-v und dann den Aufwärtspfeil. Gibt dir das '^ [[A]? Wenn Sie "echo" HI "" zur Funktion hinzufügen, wird "HI!" Ausgabe mit jedem Tastendruck? Dennis Williamson vor 13 Jahren 0
Nein, ich habe genau das versucht (Echo "Hi") und habe keine Ausgabe gesehen. ring bearer vor 13 Jahren 0
@ring bearer: Wenn Sie die Funktion (mit dem Echo) von der Befehlszeile aus ausführen, sehen Sie "HI!"? Wenn nicht, müssen Sie Ihr `.profile` als Quelle verwenden oder die Shell beenden und neu starten. (Übrigens nehme ich an, dass Sie das getan haben, aber ich bin dazu gezwungen, gründlich zu sein.) Dennis Williamson vor 13 Jahren 0
@Dennis, danke. Ich sehe jedoch nicht "Hi" oder einen vorherigen Befehl in der Eingabeaufforderung - nicht sicher, was falsch ist. Der Aufwärtspfeil druckt ^ [[A mit STRG + V ring bearer vor 13 Jahren 0
@ring bearer: Es tut mir leid, ich habe gerade gemerkt, dass ich nicht gesagt habe, dass der durch '^ [[A "dargestellte Tastendruck kein wörtliches" Caret-Lbracket-Lbracket-A "sein sollte, aber es sollte` Esc sein -lbracket-A`. Sie können dort ein Escapezeichen einfügen (wie Sie das tun, hängt davon ab, welchen Editor Sie verwenden) oder Sie können die Methode in meiner bearbeiteten Antwort verwenden. Entschuldigung nochmal! Dennis Williamson vor 13 Jahren 0
@Dennis. trap funktionierte nicht, stattdessen setze -o emacs und einige Aliasnamen ring bearer vor 13 Jahren 0