Ich verwende den vi-Bearbeitungsmodus auf Bash. Laut man readline
gibt es einige Standardbindungstasten, die im vi-Bearbeitungsmodus funktionieren. Einige Tasten funktionieren gut, aber andere Standardtasten funktionieren nicht.
Beispielsweise man readline
heißt es:
VI Command Mode functions
...
"C-E" emacs-editing-mode
...
Aber bind -p
auf meiner Linux-Box steht, dass der „Emacs-Bearbeitungsmodus“ an keine Taste gebunden ist.
$ bind -p | grep emacs-editing
# emacs-editing-mode (not bound)
Ist das eine normale Situation? Wie aktiviere ich alle Standardbindungstasten des vi-Bearbeitungsmodus in Bash? Muss ich Tasten in .inputrc manuell binden?
Antwort1
Bash modifiziert einige Standard-Readline-Bindungen, darunter diese. Der Code befindet sich iminitialize_readline
Funktion inbashline.c
.
/* In Bash, the user can switch editing modes with "set -o [vi emacs]", so it is not necessary to allow C-M-j for context switching. Turn off this occasionally confusing behaviour. */
Die Tasten zum Umschalten des Modus sind die einzigen, die nicht gebunden sind. Einige zusätzliche Tasten sind gebunden (z. B. für die Bash-spezifische Vervollständigung, etwa M-$
zum Vervollständigen von Variablennamen).