Die Konfiguration des Bash vi-Modus ist standardmäßig auf den Befehlsmodus eingestellt

14

Ist es möglich, den Bash-Vi-Modus so zu konfigurieren, dass er sich anfänglich im Befehlsmodus und nicht im Einfügemodus befindet ? Ich finde, dass ich Escviel zu viel drücken muss . Es scheint, dass es eine Möglichkeit gibt, dies in zsh anzugeben, aber ich habe keine Möglichkeit gefunden, dies in bash / readline zu tun.

Galisperis
quelle

Antworten:

2

Ich denke nicht, dass es mit der Standard GNU Readline Library möglich ist .

Möglicherweise können Sie jedoch xdotool für einen einfachen Hack verwenden, um denselben Effekt zu erzielen. Wenn Sie einen Befehl an Ihren anhängen .bashrc, der einen EscapeTastendruck simuliert , wird sichergestellt, dass Ihr Begriff im Befehlsmodus geöffnet wird:

xdotool key Escape

Möglicherweise möchten Sie eine leichte Verzögerung für den --delaySchalter verwenden, um zu verhindern, dass er Ihre Eingabeaufforderung unterdrückt ...

Beachten Sie, dass dies wahrscheinlich mehr Frustration hervorruft als Sie erwarten: Terminals sind so konzipiert, dass sie Eingaben akzeptieren. das zu brechen (wenn auch nur geringfügig) könnte keine so gute Idee sein ...

jasonwryan
quelle
1

Ich nehme es zurück, das funktioniert nicht mit der Cursorbewegung. Es funktioniert, aber mit dem lustigen Verhalten, wenn Sie diese herausnehmen:PS1="$PS1 ^[


Ändern Sie Ihre PS1Eingabeaufforderung:

PS1="test $ \[^[[s^[^[[u\]"

Wo ^[ist eine buchstäbliche Flucht ( Ctrl+ V Esc).

Die Flucht auf seiner eigenen in den mittleren Änderungen in den Befehlsmodus, der ^[[sund ^[[uentkommt speichern und die Cursorposition wiederherzustellen; ohne das fand ich ein komisches Verhalten.

Kevin
quelle
1

Die Antwort lautet nein . Die relevante Bash-Quelldatei lautetbashline.c

Alexander
quelle
-1

Versuchen set +o vi

set -o vi wechselt wieder in den Bearbeitungsmodus.

http://tldp.org/LDP/abs/html/options.html

Nikhil Mulley
quelle
Das funktioniert nicht: es schaltet den vi-Modus aus ...
jasonwryan
Ja, ich habe es versucht. Richtig. Ich kann mir das vorstellen - ändere mit vim die cmap (Referenz: help mode-switching in vim) für Esckey. Die entsprechende Standardzuordnung für EscistCtrl + ]
Nikhil Mulley
Funktioniert auch nicht auf meinem ksh88.
Rahmu