Respostas:
No caso de alguém estar vagando por aqui recentemente, o IPython 5.0 mudou de readline para prompt_toolkit , então uma resposta atualizada a esta pergunta é passar uma opção:
$ ipython --TerminalInteractiveShell.editing_mode=vi
... ou para defini-lo globalmente na configuração do perfil ( ~/.ipython/profile_default/ipython_config.py
; crie-o com ipython profile create
se você não tiver) com:
c.TerminalInteractiveShell.editing_mode = 'vi'
Parece que uma solução funciona para muitos outros aplicativos compatíveis com readline:
Defina o seguinte em seu ~/.inputrc
arquivo:
set editing-mode vi
set keymap vi
set convert-meta on
set convert-meta on
. Ele entra em conflito com a entrada Unicode, portanto, se você colar ou digitar Unicode, poderá acionar vários eventos, o que pode ser surpreendente. Por exemplo, tente digitar ü e você verá um resultado interessante.
set keymap vi
muda o mapa de teclado (ou seja, modo) que os comandos a seguir afetarão , e set convert-meta on
muda como algumas teclas se comportam . Não tenho certeza se você precisa deles.
set convert-meta on
(e qualquer coisa abaixo dessa linha) só se aplica ao modo de comando, não ao modo de inserção.
Você também pode alternar interativamente entre o modo Vi e o modo Emacs. De acordo com os documentos do readline para alternar entre eles você deve ser capaz de usar a combinação de teclas MCj, mas isso só me permite mudar para o modo vi - no meu Mac (onde ESC é usado como a tecla 'Meta' ) é: ESC+ CTRL+ j. Para voltar ao modo Emacs, pode-se usar Ce, mas isso não pareceu funcionar para mim - eu tive que fazer o MCe - no meu Mac é: ESC+ CTRL+ e.
Para sua informação, meu ~ / .inputrc é configurado da seguinte forma:
set meta-flag on
set input-meta on
set convert-meta off
set output-meta on
ipython
usa a biblioteca readline e isso é configurável usando o ~/.inputrc
arquivo. Você pode adicionar
set editing-mode vi
a esse arquivo para fazer com que todos os readline
aplicativos baseados usem atalhos de teclado no estilo vi ao invés do Emacs.
ipython
mudado de readline
uma biblioteca python chamado prompt_toolkit
de 5.0.0
modo que este não funciona mais.
Você pode definir o vi em seu arquivo de configuração de inicialização .ipython. Crie um se não o tiver, adicionando um arquivo a ~/.ipython/profile_default/startup/
algo como start.py
. Aqui está um exemplo:
# 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 *
A última linha é se você usa ipython com Django e deseja importar todos os seus modelos por padrão.