在 JupyterLab 中扩展代码片段的键盘快捷键

Keyboard shortcut to expand code snippets in JupyterLab

有谁知道如何制作将特定代码粘贴到所选单元格或将片段扩展为代码块的快捷方式?
例如,我想在按下 Ctrl+Shift+M 之类的东西时用有用的导入列表填充一个单元格。这会将单元格内容扩展为:
import numpy as np import pandas as pd (...) .

可选地,这也可以像某些 IDE 中可用的文本完成工具一样工作。例如当我写这样的东西时:
;imp + TAB

它会展开成与上面相同的列表。

知道如何在 JupyterLab 中定义它吗?

我看到了 this 答案,但它对我不起作用(返回 javascript 错误)

在 JupyterLab 2.1+ 中,您可以使用以下设置添加快捷方式以插入代码段:

{
    "shortcuts": [
        {
            "command": "apputils:run-first-enabled",
            "selector": "body",
            "keys": ["Accel Shift M"],
            "args": {
                "commands": [
                    "console:replace-selection",
                    "fileeditor:replace-selection",
                    "notebook:replace-selection",
                ],
                "args": {"text": "import numpy as np\nimport pandas as pd\n"}
            }
        }
    ]
}

有关更详细的说明,请参阅我的 new answer 您链接的问题。

另一种选择是使用 JupyterLab 的代码片段扩展之一:

对于 IPython 中片段的 emmet 式扩展,您可以使用:

from IPython import get_ipython

def import_completer(ipython, event):
    return [
        'import numpy as np\nimport pandas as pd\n',
        'import tensorflow as tf\nimport autokeras as ak\n'
    ]

ipython = get_ipython()
ipython.set_hook('complete_command', import_completer, re_key='.*imp')