1
有什麼辦法可以從默認'%'改變IPython魔術函數前綴嗎?我在ipython_config.py中找不到任何選項更改IPython魔術函數前綴(從'%'到':'),反正呢?
由於我使用vim和ghci,我(以某種方式)訓練自己將':'視爲命令前綴。
這很煩人,當我想打電話的神奇功能和自動前綴「:」每一個IPython的神奇的功能調用,如:CD,:ED和:負載
有什麼辦法可以從默認'%'改變IPython魔術函數前綴嗎?我在ipython_config.py中找不到任何選項更改IPython魔術函數前綴(從'%'到':'),反正呢?
由於我使用vim和ghci,我(以某種方式)訓練自己將':'視爲命令前綴。
這很煩人,當我想打電話的神奇功能和自動前綴「:」每一個IPython的神奇的功能調用,如:CD,:ED和:負載
神奇逃逸被硬編碼在很多地方, 但如果你想要做的是儘量減少你的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,所以我不會相信他們不會搞亂任何東西,但它似乎在當前的主人工作。
謝謝,您的解決方案工作! (至少現在,我最好使用默認的_%_作爲長期解決方案) 我不敢相信IPython開發人員不會使用vim並決定**硬編碼**的東西。 另外我只是好奇_%_來自哪裏? – wizzup
它必須是不合法的語法,'%'只是被挑選出來。 IPython是許多原始貢獻者的第一個真正的Python項目。這是多年前完成的,只是沒有改變,因爲沒有理由(個人,我不喜歡':')。 IPython一直在進行大量的清理工作,這應該能夠使這種更直接的變化。雖然這個過程還沒有完成。 – minrk
關於清理工作的任何消息?許多控制檯都有它們的魔術變量和函數,它們可能會延遲前綴字符($,:,%,>,?等)。所以真正讓事情可配置是最好的選擇。我認爲這並不難。 – zoujyjs