Ich habe in einem anderen Beitrag gelesen, dass man im Terminal anstelle der Taste CtrlJoder eingeben kann , was großartig ist. Aber ich möchte dies in eine andere Kombination ändern können, zum Beispiel: . Ich habe versucht, die Taste neu zuzuordnen, aber ohne Erfolg.CtrlMReturnCtrlspacebarF1
Ist das möglich?
Antwort1
Kommt darauf an, was genau Sie tun möchten.
Terminals verfügen über zwei Hauptmodi, die beide mit zusätzlichen Einstellungen feinabgestimmt werden können:
- Gekochter/kanonischer Modus. In diesem Modus verfügt das Terminal über einen internen Zeileneditor, in dem die Zeichen
^H
(oder^?
),^W
,^U
(oder@
),^V
(oder\
) zum Bearbeiten der Zeile verwendet werden können. Bis das Zeichen empfangen wird, wird nichts an die Anwendung gesendet, die vom Terminalgerät liest^J
. - rohModus. Dabei steht jedes Zeichen der Anwendung, die das Endgerät liest, zum Lesen zur Verfügung, sobald es eingegeben wurde, oder nach einer Verzögerung oder nachdem so viele eingegeben wurden, je nachZeitUndMindestParameter, aber auf keinen Fall mit diesem internen Zeileneditor.
In beiden Fällen ^M
kann das Zeichen (CR) automatisch in ^J
(LF) übersetzt werden (oder bei Terminals ignoriert werden, die beim Drücken der Eingabetaste sowohl CR als auch LF senden).
Der erste Modus ist der Standardmodus des Terminals. Der zweite Modus wird von Anwendungen wie oder verwendet zsh
, die die Kontrolle über die Zeilenbearbeitung übernehmen möchten.bash
vi
Im ersten Modus können Sie nicht ändern, welches Zeichen zum Akzeptieren der Zeile verwendet wird.
Sie können Ihrem Terminal jedoch möglicherweise sagen, dass es das ^J
Zeichen senden soll, wenn diese oder jene Taste gedrückt wird. Mit xterm
können Sie beispielsweise die translations
X11-Ressource verwenden, um die Tastenbelegung zu ändern und es anzuweisen, bei einem bestimmten Tastendruck das Gewünschte zu senden. Wenn Ihr Terminal die Neubelegung der Tastatur nicht unterstützt, können Sie screen
die Übersetzung trotzdem von GNU durchführen lassen. Wenn Ihr Terminal beispielsweise die ^[OP
Zeichenfolge beim Drücken von sendet F1, können Sie Folgendes hinzufügen:
bindkey \033OP "\012"
um ~/screenrc
es anzuweisen, LF zu senden, wenn Sie drückenF1
Für den zweiten Fall, bei dem Anwendungen die Kontrolle über die Eingabe übernehmen, können Sie immer noch den gleichen Ansatz wie oben verwenden, aber Sie können auch jede einzelne Anwendung so konfigurieren, dass sie dies und das tut, wenn Sie drückenF1
Beispielsweise zsh
wird mit das LF-Zeichen an das Widget gebunden accept-line
zsh
. Sie könnten Folgendes tun:
bindkey "^[OA" accept-line
F1um eine Bindung an dasselbe Widget zu haben .
Beachten Sie, dass Ctrl+Spacenormalerweise das NUL-Zeichen gesendet wird, auf das Sie als \0
oder verweisen können ^@
.