修改或挂接到 Jupyter 的选项卡补全

Modify or hook into Jupyter's tab completion

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

有什么方法可以自定义“[不带空格的字符串]”以制表符补全为某个特定的 UTF-8 字符或字符串?

例如"\implies" + tab -> "⇒"

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

谢谢!

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')

然后当你输入时(关键字后面的 space 很重要):

然后按tab,你会得到: