Actuellement dans Bash, j'utilise set -o vipour 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 createsi 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 ~/.inputrcfichier:
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 vichangements sur le keymap (c'est-à-dire le mode) que les commandes suivantes affecteront , et set convert-meta onsur 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
ipythonutilise la bibliothèque readline et ceci est configurable à l'aide du ~/.inputrcfichier. Vous pouvez ajouter
set editing-mode vi
à ce fichier pour que toutes les readlineapplications basées utilisent des raccourcis clavier de style vi au lieu d'Emacs.
ipythoncommuté à partir readlined'une bibliothèque de python appelé prompt_toolkitdans 5.0.0si 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.