Gibt es eine Möglichkeit, Bash oder Zsh vom Emacs-Modus mit einem Tastendruck in den vi-Modus umzuschalten?

8

Ich möchte vorübergehend vom emacs-Modus in den vi-Modus wechseln können, da der vi-Modus manchmal besser ist, aber ich bin normalerweise erst halb in der Lage, etwas einzugeben, bevor ich merke, dass ich es möchte um den vi-Modus zu verwenden.

Ich möchte nicht permanent in den vi-Modus wechseln, da ich normalerweise den emacs-Modus in der Befehlszeile bevorzuge, hauptsächlich weil ich damit vertraut bin und im Laufe der Jahre viele der Tastenanschläge zur zweiten Natur geworden sind. (Als Editor benutze ich im Allgemeinen emacs im Viper-Modus, so dass ich sowohl vi als auch emacs-Tastenanschläge verwenden kann, da ich sie unabsichtlich immer im vi benutze und Dinge vermasselt habe und weil in einigen Fällen finde ich vi Tastenanschläge mehr einprägsam und praktisch, und in anderen Fällen Emacs.)

    
iconoclast 14.04.2010, 18:49
quelle

3 Antworten

10

Sie können einen Umschalter erstellen, da die Tastenbelegungen zwischen vi-Modus und emacs-Modus getrennt sind.

%Vor%

Jetzt wechselt Alt-e (oder Esc) zwischen den Modi.

Fügen Sie dies irgendwo in Ihrer Definition für PS1 hinzu, so dass Sie in Ihrer Eingabeaufforderung einen Anzeiger haben, in welchem ​​Modus Sie sich befinden. Die Änderung wird nicht sofort angezeigt, wenn Sie den Modus wechseln, aber wenn eine neue Eingabeaufforderung angezeigt wird wird ausgegeben.

%Vor%     
Dennis Williamson 14.04.2010, 22:36
quelle
5

Aha! Ich schaute auf die Readline-Quelle und fand heraus, dass Sie das tun können:

%Vor%

Es scheint kein Umschalter zu sein, aber das ist wahrscheinlich gut genug!

Für die Nachwelt, hier ist meine ursprüngliche Antwort, die für Leute nützlich sein könnte, die versuchen Dinge zu tun, für die es keine readline-Funktion gibt.

Hier können Sie es einrichten, indem Sie die aktuelle Befehlszeile löschen. Nicht was du willst, ich weiß, aber vielleicht hilft es jemand anderem, der diese Frage findet. In ~ / .inputrc:

%Vor%

oder um zu schalten ... das sollte funktionieren:

%Vor%

Dies sind im Wesentlichen Aliase, die einen Schritt weiter gehen, um Schlüsseln in readline zuzuordnen, so dass Sie keinen Aliasnamen eingeben müssen und Enter drücken.

    
Cascabel 14.04.2010 19:12
quelle
1

Die folgenden .inputrc -Zeilen erlauben Meta / Alt + E , zwischen den Modi emacs und vi-insert zu wechseln.

Wenn Sie gleichzeitig j und k gleichzeitig verwenden, gelangen Sie in den Modus vi-command .

Hinweis: Das einzige englische Wort mit "kj" ist "Blackjack", keine Wörter enthalten "jk")

%Vor%

Hinweis: Wenn Sie eine Bindung unter keymap emacs zu vi-movement-mode hinzufügen, um direkt in den vi-command -Modus zu wechseln, wird die Eingabeaufforderung nicht aktualisiert, wenn Sie show-mode-in-prompt on haben. Daher ist die obige Problemumgehung erforderlich .

    
Tom Hale 16.08.2016 11:18
quelle

Tags und Links