Wie schalte ich alle Standardbindungstasten des vi-Bearbeitungsmodus in der Bash ein?

Wie schalte ich alle Standardbindungstasten des vi-Bearbeitungsmodus in der Bash ein?

Ich verwende den vi-Bearbeitungsmodus auf Bash. Laut man readlinegibt es einige Standardbindungstasten, die im vi-Bearbeitungsmodus funktionieren. Einige Tasten funktionieren gut, aber andere Standardtasten funktionieren nicht.

Beispielsweise man readlineheißt es:

VI Command Mode functions
...
         "C-E"  emacs-editing-mode
...

Aber bind -pauf 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_readlineFunktion 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).

verwandte Informationen