IPython マジック関数のプレフィックスをデフォルトの '%' から変更する方法はありますか? ipython_config.py にオプションが見つかりません
私はvimとghciを使用しているので、(どういうわけか)コマンドプレフィックスとして「:」を考えるように訓練しました。
これは、マジック関数を呼び出して、すべての IPython マジック関数呼び出しに自動プレフィックス ':' を付けたい場合に非常に面倒です (例: :cd、:ed、:load)。
IPython マジック関数のプレフィックスをデフォルトの '%' から変更する方法はありますか? ipython_config.py にオプションが見つかりません
私はvimとghciを使用しているので、(どういうわけか)コマンドプレフィックスとして「:」を考えるように訓練しました。
これは、マジック関数を呼び出して、すべての IPython マジック関数呼び出しに自動プレフィックス ':' を付けたい場合に非常に面倒です (例: :cd、:ed、:load)。
魔法のエスケープは多くの場所でハードコーディングされていますが、vimによる筋肉の記憶のペナルティを最小限に抑えるだけの場合は、inputsplitterにコロンをパーセントで処理するように指示できます。
import re
from IPython.core import splitinput
from IPython.core.inputsplitter import transform_escaped
# this is a one-character change, adding colon to the second group,
# so the line splitter will interpret ':' as an escape char
splitinput.line_split = line_split = re.compile("""
^(\s*) # any leading space
([,;/%:]|!!?|\?\??)? # escape character or characters
\s*(%{0,2}[\w\.\*]*) # function/method, possibly with leading %
# to correctly treat things like '?%magic'
(.*?$|$) # rest of line
""", re.VERBOSE)
# treat colon the same as percent:
transform_escaped.tr[':'] = transform_escaped._tr_magic
これで、次のようなことができるようになります。
:cd foo
for t in range(3):
:time time.sleep(t)
これを常に起動したい場合は、このコードをIPythonスタートアップファイル(〜/ .ipython / profile_default / startup / whatever.py)に入れることができます。
これらは正確にはパブリックAPIではないため、何も混乱させないように信頼することはできませんが、現在のマスターでは機能しているようです。