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 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:
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 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:
set meta-flag on
set input-meta on
set convert-meta off
set output-meta on
ipython
verwendet die Readline-Bibliothek und diese kann mithilfe der ~/.inputrc
Datei konfiguriert werden . Du kannst hinzufügen
set editing-mode vi
In dieser Datei verwenden alle readline
basierten Anwendungen Tastenkombinationen im vi-Stil anstelle von Emacs.
ipython
von schaltete readline
auf eine Python - Bibliothek namens prompt_toolkit
in 5.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:
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.