Benutzerdefinierte Tastenkombinationen für den VI-Shell-Modus, z. B. „set -o vi“?

Benutzerdefinierte Tastenkombinationen für den VI-Shell-Modus, z. B. „set -o vi“?

Ich habe gerade die Wunder von entdeckt set -o viund bin neugierig, ob es möglich ist, diesen vi-Shell-Modus auf die gleiche Weise anzupassen, wie Sie vi oder vim anpassen können?

Erstellen Sie beispielsweise eine benutzerdefinierte Tastenkombination, um esc? eine bequemere Taste oder Tastenkombination zuzuordnen.

Wenn es derzeit nicht unterstützt wird, wie schwierig wäre es, den Quellcode des Programms zu ändern und einige Anpassungen fest zu codieren, oder wäre das eine schlechte Idee?

Antwort1

Ja, Sie können die Tastenzuordnungen (für den vi- oder den emacs-ähnlichen Modus) mit dem bindintegrierten Befehl ändern. Dies ist eigentlich eine Readline-Funktion (Sie können also vi-ähnliche Bindungen in allen Readline-Programmen haben, nicht nur in Bash).

Die Taste, nach der Sie suchen, heißt vi-movement-modeund ist standardmäßig \e(Escape). Sie könnten sie zusätzlich an (und das ist ziemlich albern) Gleichheitszeichen wie folgt binden. Die zweite Zeile entfernt die Bindung an Escape:

$ bind "=":vi-movement-mode 
$ bind -r "\e"

Beim Ausführen bind -pwerden Ihnen alle Tasten angezeigt, die Sie binden können, und ihre aktuellen Bindungen (sofern vorhanden).

Sie können bindBefehle in Ihr eingeben .bashrcoder es bearbeiten, ~/.inputrcdamit es auf alle von Ihnen ausgeführten Readline-Programme angewendet wird. Die Readline-Dokumente enthalten alle Einzelheiten.

verwandte Informationen