Risposte:
Nel caso qualcuno sia entrato qui di recente, IPython 5.0 è passato da readline a prompt_toolkit , quindi una risposta aggiornata a questa domanda è passare un'opzione:
$ ipython --TerminalInteractiveShell.editing_mode=vi
... o per impostarlo globalmente nella configurazione del profilo ( ~/.ipython/profile_default/ipython_config.py
; crealo con ipython profile create
se non ce l'hai) con:
c.TerminalInteractiveShell.editing_mode = 'vi'
Sembra che una soluzione funzioni per molte altre app compatibili con readline:
Imposta quanto segue nel tuo ~/.inputrc
file:
set editing-mode vi
set keymap vi
set convert-meta on
set convert-meta on
. È in conflitto con la voce Unicode, quindi se incolli o digiti Unicode, puoi attivare vari eventi, il che potrebbe essere sorprendente. Ad esempio, prova a digitare ü e vedrai un risultato interessante.
set keymap vi
cambi la mappa set convert-meta on
dei tasti (cioè la modalità) influenzata dai seguenti comandi e cambia il comportamento di alcuni tasti . Non sono sicuro se ne hai bisogno.
set convert-meta on
(e qualsiasi cosa sotto quella riga) si applicherà solo alla modalità di comando, non alla modalità di inserimento.
Puoi anche passare interattivamente tra la modalità Vi e la modalità Emacs. Secondo i documenti di readline per passare da uno all'altro dovresti essere in grado di utilizzare la combinazione di tasti MCj ma questo sembra consentirmi solo di passare alla modalità vi - sul mio Mac (dove ESC è usato come tasto "Meta" ) è: ESC+ CTRL+ j. Per tornare alla modalità Emacs si può usare Ce ma non sembra funzionare per me - ho dovuto invece fare MCe - sul mio Mac è: ESC+ CTRL+ e.
Cordiali saluti, il mio ~ / .inputrc è impostato come segue:
set meta-flag on
set input-meta on
set convert-meta off
set output-meta on
ipython
usa la libreria readline e questa è configurabile usando il ~/.inputrc
file. Puoi aggiungere
set editing-mode vi
a quel file per fare in modo che tutte le readline
applicazioni basate usino combinazioni di tasti in stile vi invece di Emacs.
ipython
passato da readline
a una libreria python chiamata prompt_toolkit
in 5.0.0
modo che non funzioni più.
Puoi impostare vi nel tuo file di configurazione di avvio .ipython. Creane uno se non ce l'hai aggiungendo un file a ~/.ipython/profile_default/startup/
chiamato qualcosa di simile start.py
. Ecco un esempio:
# 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 *
L'ultima riga è se usi ipython con Django e desideri importare tutti i tuoi modelli per impostazione predefinita.