Atualmente no Bash eu uso set -o vi
para habilitar o modo vi no prompt do bash.
Como faço para fazer isso no ipython?
Nota: Se uma resposta se aplica a todos os * nix, removerei o OS X do título :)
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:Fonte: http://www.jukie.net/bart/blog/20040326082602
fonte
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 , eset 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:
fonte
ipython
usa a biblioteca readline e isso é configurável usando o~/.inputrc
arquivo. Você pode adicionara esse arquivo para fazer com que todos os
readline
aplicativos baseados usem atalhos de teclado no estilo vi ao invés do Emacs.fonte
ipython
mudado dereadline
uma biblioteca python chamadoprompt_toolkit
de5.0.0
modo que este não funciona mais.Eu precisava ser capaz de alternar os modos interativamente no IPython 5 e descobri que você pode fazer isso recriando o gerenciador de prompt na hora:
fonte
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 comostart.py
. Aqui está um exemplo:A última linha é se você usa ipython com Django e deseja importar todos os seus modelos por padrão.
fonte