現在Bashでは、set -o vi
を使用して、bashプロンプトでviモードを有効にします。
これをipythonでどのように行けばいいですか?
注:回答がすべての* nixに適用される場合、タイトルからOS Xを削除します:)
誰かが最近ここをさまよう場合、 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
ViモードとEmacsモードをインタラクティブに切り替えることもできます。 readline docs によると、それらを切り替えるには、MCjキーの組み合わせを使用できるはずですが、それはviモードに切り替えることしかできないようです-私のMac(ESCは「メタ」キーとして使用されます): ESC+CTRL+j。 Emacsモードに戻すには、C-eを使用できますが、それは私には動作しないように見えました-私の代わりにM-C-eをしなければなりませんでした-私のMacでは: ESC+CTRL+e。
参考までに、私の〜/ .inputrcは次のように設定されています。
set meta-flag on
set input-meta on
set convert-meta off
set output-meta on
ipython
はreadlineライブラリを使用し、これは~/.inputrc
ファイルを使用して構成可能です。あなたは付け加えられます
set editing-mode vi
そのファイルにreadline
ベースのすべてのアプリケーションがEmacsの代わりにviスタイルのキーバインドを使用するようにします。
IPython 5でインタラクティブにモードを切り替えられるようにする必要がありましたが、オンザフライでプロンプトマネージャーを再作成することで切り替えできることがわかりました。
a = get_ipython().configurables[0]; a.editing_mode='vi'; a.init_Prompt_toolkit_cli()
.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を使用し、デフォルトですべてのモデルをインポートする場合です。