Ich habe gerade die Wunder von set -o vi
entdeckt und bin gespannt, ob es möglich ist, diesen vi-Shell-Modus auf die gleiche Weise anzupassen, wie Sie es mit vi oder vim tun können.
Erstellen Sie beispielsweise eine benutzerdefinierte Schlüsselbindung, um einen bequemeren Schlüssel oder eine bequemere Tastenkombination zuzuordnen esc
.
Wenn es derzeit nicht unterstützt wird, wie schwierig wäre es, den Quellcode des Programms und den Hardcode in einigen Anpassungen zu ändern, oder wäre das eine schlechte Idee?
Antworten:
Ja, Sie können die Tastenzuordnungen (entweder für den vi- oder den emacs-ähnlichen Modus) mit der integrierten Funktion
bind
ändern. Dies ist eigentlich eine Readline-Funktion (so dass Sie in allen Readline-Programmen vi-ähnliche Bindungen haben können, nicht nur Bash).Der gesuchte Schlüssel wird aufgerufen
vi-movement-mode
und ist standardmäßig\e
(Escape). Sie könnten es auch so binden (und das ist ziemlich albern). In der zweiten Zeile wird die Bindung entfernt, um zu entkommen:Beim Ausführen
bind -p
werden Ihnen alle Schlüssel angezeigt, die Sie binden können, sowie deren aktuelle Bindungen (falls vorhanden).Sie können
bind
Befehle in Ihr einfügen.bashrc
oder bearbeiten~/.inputrc
, damit sie auf alle von Ihnen ausgeführten Readline-Programme angewendet werden . Die Readline-Dokumente enthalten alle Details.quelle
bind "Control-Space":vi-movement-mode
- das funktioniert gut. Aber zum Beispiel habe ich in vim zwei Zeichen hintereinander als Auslöser für eingegebenesc
, dh, wenn Sie eingeben ,jj
kehren Sie zum normalen Modus zurück. Das hat nicht funktioniert, als ich es mit bind ausprobiert habe. Gibt es eine spezielle Möglichkeit, es zum Laufen zu bringen?@
), sonst erhält er keine Benachrichtigung.bind '"jk":vi-movement-mode'