修改或挂钩Jupyter的选项卡完成

时间:2018-05-13 20:17:43

标签: jupyter-notebook jupyter tab-completion jupyter-lab

我想知道是否有办法修改Jupyter Lab或Notebook的标签完整功能。例如,如果我输入“\ alpha”,然后按Tab键,我将在单元格中获得UTF-8字符“α”。

有没有办法可以自定义“[没有空格的字符串]”来制作一些特定的UTF-8字符或字符串?

e.g。 “\ implies”+ tab - > “⇒”

在我的编程生涯中我可以看到大量的用例,所以我想知道Jupyter(Lab或Notebook)是否能够修改一些设置(或加载文件)将字符串映射到选项卡的功能输出。或者你可以用它来实现这个想法吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

Jupyter是(基于)IPython并且它是完成引擎 - 我们可以利用它。

更新:您可以覆盖latex_symbols dict以获得所需的行为:

from IPython.core.latex_symbols import latex_symbols
latex_symbols['\\implies'] = '⇒'

您应该能够以此示例为基础,使其适用于各种角色。

初步回答 /另一个解决方案:你可以挂钩到IPython完成者,虽然它不会完全按你的意愿工作:它不会替换文本,而只是附加一个特殊字符。这是一个例子:

from IPython import get_ipython

def implies_competer(ipython, event):
    return ['⇒']

ipython = get_ipython()
ipython.set_hook('complete_command', implies_competer, re_key='.*implies')

然后当您键入(关键字后面的空格很重要)时: enter image description here

然后按tab,您将获得:

enter image description here