Derzeit set -o vi
aktiviere ich in Bash den vi-Modus in meiner Bash-Eingabeaufforderung.
Wie bringe ich das in ipython zum Laufen?
Hinweis: Wenn eine Antwort für alle * nix gilt, entferne ich OS X aus dem Titel :)
Für den Fall, dass kürzlich jemand hierher gekommen ist, hat IPython 5.0 von readline zu prompt_toolkit gewechselt . Eine aktualisierte Antwort auf diese Frage besteht darin, eine Option zu übergeben:
$ ipython --TerminalInteractiveShell.editing_mode=vi
... oder um es global in der Profilkonfiguration festzulegen ( ~/.ipython/profile_default/ipython_config.py
; erstellen Sie es mit, ipython profile create
wenn Sie es nicht haben) mit:
c.TerminalInteractiveShell.editing_mode = 'vi'
Es sieht so aus, als ob eine Lösung für viele andere Readline-kompatible Apps funktioniert:
Stellen Sie Folgendes in Ihre
~/.inputrc
Datei ein:Quelle: http://www.jukie.net/bart/blog/20040326082602
quelle
set convert-meta on
. Dies steht in Konflikt mit der Unicode-Eingabe. Wenn Sie also Unicode einfügen oder eingeben, können Sie verschiedene Ereignisse auslösen, was überraschend sein kann. Versuchen Sie beispielsweise, ü einzugeben, und Sie werden ein interessantes Ergebnis sehen.set keymap vi
, als ob sich die folgenden Befehle auf die Tastaturbelegung (dh den Modus) auswirken und dasset convert-meta on
Verhalten einiger Tasten ändern . Ich bin mir nicht sicher, ob du sie brauchst.set convert-meta on
(und alles unterhalb dieser Zeile) gilt nur für den Befehlsmodus, nicht für den Einfügemodus.Sie können auch interaktiv zwischen dem Vi-Modus und dem Emacs-Modus wechseln. Laut den Readline-Dokumenten , um zwischen ihnen zu wechseln, sollten Sie in der Lage sein, die MCj-Tastenkombination zu verwenden, aber das scheint mir nur zu erlauben, in den vi-Modus zu wechseln - auf meinem Mac (wo ESC als 'Meta'-Taste verwendet wird ) es ist: ESC+ CTRL+ j. Um wieder in den Emacs-Modus zu wechseln, kann man Ce verwenden, aber das schien bei mir nicht zu funktionieren - ich musste stattdessen MCe machen - auf meinem Mac ist es: ESC+ CTRL+ e.
Zu Ihrer Information, mein ~ / .inputrc ist wie folgt eingerichtet:
quelle
ipython
verwendet die Readline-Bibliothek und diese kann mithilfe der~/.inputrc
Datei konfiguriert werden . Du kannst hinzufügenIn dieser Datei verwenden alle
readline
basierten Anwendungen Tastenkombinationen im vi-Stil anstelle von Emacs.quelle
ipython
von schaltetereadline
auf eine Python - Bibliothek namensprompt_toolkit
in5.0.0
so dass diese nicht mehr funktioniert.Ich musste in IPython 5 in der Lage sein, den Modus interaktiv zu wechseln, und ich stellte fest, dass Sie dies tun können, indem Sie den Eingabeaufforderungs-Manager im laufenden Betrieb neu erstellen:
quelle
Sie können vi in Ihrer .ipython-Startkonfigurationsdatei festlegen. Erstellen Sie eine, wenn Sie sie nicht haben, indem Sie eine Datei hinzufügen,
~/.ipython/profile_default/startup/
die so etwas wie aufgerufen heißtstart.py
. Hier ist ein Beispiel:Diese letzte Zeile ist, wenn Sie ipython mit Django verwenden und standardmäßig alle Ihre Modelle importieren möchten.
quelle