Antworten:
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 createwenn 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 ~/.inputrcDatei ein:
set editing-mode vi
set keymap vi
set convert-meta on
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 das set convert-meta onVerhalten 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:
set meta-flag on
set input-meta on
set convert-meta off
set output-meta on
ipythonverwendet die Readline-Bibliothek und diese kann mithilfe der ~/.inputrcDatei konfiguriert werden . Du kannst hinzufügen
set editing-mode vi
In dieser Datei verwenden alle readlinebasierten Anwendungen Tastenkombinationen im vi-Stil anstelle von Emacs.
ipythonvon schaltete readlineauf eine Python - Bibliothek namens prompt_toolkitin 5.0.0so 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:
a = get_ipython().configurables[0]; a.editing_mode='vi'; a.init_prompt_toolkit_cli()
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ßt start.py. Hier ist ein Beispiel:
# Initializing script for ipython in ~/.ipython/profile_default/startup/
from IPython import get_ipython
ipython = get_ipython()
# If in ipython, set vi and load autoreload extension
if 'ipython' in globals():
ipython.editing_mode = 'vi'
ipython.magic('load_ext autoreload')
ipython.magic('autoreload 2')
from Myapp.models import *
Diese letzte Zeile ist, wenn Sie ipython mit Django verwenden und standardmäßig alle Ihre Modelle importieren möchten.