Actuellement dans Bash, j'utilise set -o vi
pour activer le mode vi dans mon invite bash.
Comment faire pour que cela se passe dans ipython?
Remarque: si une réponse s'applique à tous les * nix, je supprimerai l'OS X du titre :)
Réponses:
Au cas où quelqu'un se promènerait ici récemment, IPython 5.0 est passé de readline à prompt_toolkit , donc une réponse mise à jour à cette question est de passer une option:
$ ipython --TerminalInteractiveShell.editing_mode=vi
... ou pour le définir globalement dans la configuration du profil ( ~/.ipython/profile_default/ipython_config.py
; créez-le avec ipython profile create
si vous ne l'avez pas) avec:
c.TerminalInteractiveShell.editing_mode = 'vi'
On dirait qu'une solution fonctionne pour de nombreuses autres applications compatibles readline:
Définissez les éléments suivants dans votre ~/.inputrc
fichier:
set editing-mode vi
set keymap vi
set convert-meta on
set convert-meta on
. Il entre en conflit avec l'entrée Unicode, donc si vous collez ou tapez unicode, vous pouvez déclencher divers événements, ce qui peut être surprenant. Par exemple, essayez de taper ü et vous verrez un résultat intéressant.
set keymap vi
changements sur le keymap (c'est-à-dire le mode) que les commandes suivantes affecteront , et set convert-meta on
sur le comportement de certaines touches . Je ne sais pas si vous en avez besoin.
set convert-meta on
(et tout ce qui se trouve en dessous de cette ligne) ne s'appliquera qu'au mode commande, pas au mode insertion.
Vous pouvez également basculer de manière interactive entre le mode Vi et le mode Emacs. Selon la documentation readline pour basculer entre eux, vous êtes censé pouvoir utiliser la combinaison de touches MCj, mais cela semble seulement me permettre de passer en mode vi - sur mon Mac (où ESC est utilisé comme touche `` Meta '' ) c'est: ESC+ CTRL+ j. Pour revenir en mode Emacs, on peut utiliser Ce mais cela ne semble pas fonctionner pour moi - je devais plutôt faire MCe - sur mon Mac c'est: ESC+ CTRL+ e.
Pour info, mon ~ / .inputrc est configuré comme suit:
set meta-flag on
set input-meta on
set convert-meta off
set output-meta on
ipython
utilise la bibliothèque readline et ceci est configurable à l'aide du ~/.inputrc
fichier. Vous pouvez ajouter
set editing-mode vi
à ce fichier pour que toutes les readline
applications basées utilisent des raccourcis clavier de style vi au lieu d'Emacs.
ipython
commuté à partir readline
d'une bibliothèque de python appelé prompt_toolkit
dans 5.0.0
si cela ne fonctionne plus.
Vous pouvez définir vi dans votre fichier de configuration de démarrage .ipython. Créez-en un si vous ne l'avez pas en ajoutant un fichier ~/.ipython/profile_default/startup/
appelé quelque chose comme start.py
. Voici un exemple:
# 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 *
Cette dernière ligne concerne si vous utilisez ipython avec Django et que vous souhaitez importer tous vos modèles par défaut.