回答:
最近誰かがここをさまよう場合、IPython 5.0はreadlineからprompt_toolkitに切り替わったため、この質問に対する更新された回答はオプションを渡すことです:
$ ipython --TerminalInteractiveShell.editing_mode=vi
...または、プロファイル構成でグローバルに設定します(~/.ipython/profile_default/ipython_config.py
それがipython profile create
ない場合は、で作成します)。
c.TerminalInteractiveShell.editing_mode = 'vi'
ソリューションは他の多くのreadline互換アプリで機能するようです:
~/.inputrc
ファイルに次のように設定します。
set editing-mode vi
set keymap vi
set convert-meta on
set convert-meta on
。これはUnicodeエントリと競合するため、Unicodeを貼り付けたり入力したりすると、驚くべきさまざまなイベントがトリガーされる可能性があります。たとえば、üと入力すると、興味深い結果が表示されます。
set keymap vi
次のコマンドが影響を与えるキーマップ(つまりモード)をset convert-meta on
変更し、一部のキーの動作を変更するようです。必要かどうかはわかりません。
set convert-meta on
(およびその行の下にあるものはすべて)コマンドモードにのみ適用され、挿入モードには適用されません。
ViモードとEmacsモードをインタラクティブに切り替えることもできます。readline docsによると、それらを切り替えるにはMCjキーの組み合わせを使用できるはずですが、それだけでviモードに切り替えることができます-私のMac(ESCが「Meta」キーとして使用されている場合) )それは:ESC+ CTRL+ + jです。Emacsモードに切り替えるには、Ceを使用できますが、私には機能しないようでした。代わりにMCeを実行する必要がありました-Macの場合:ESC+ CTRL+ e。
ちなみに私の〜/ .inputrcは次のように設定されています:
set meta-flag on
set input-meta on
set convert-meta off
set output-meta on
.ipython起動設定ファイルでviを設定できます。ない場合は、の~/.ipython/profile_default/startup/
ようなファイルを追加して作成しますstart.py
。次に例を示します。
# 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 *
最後の行は、Djangoでipythonを使用していて、デフォルトですべてのモデルをインポートする場合です。