有没有办法在没有模式的情况下使用 Jupyter Notebooks?

Is there a way to use Jupyter Notebooks without modes?

我正在使用 jupyter-lab,想知道是否有一个插件可以让我在不切换命令和编辑模式的情况下工作?

我一直在剪切、粘贴和撤消单元格,因为我在输入字符 'x'、'y' 或 'z' 时不小心切换到了命令模式编辑模式。

一些上下文:模式的概念是 Jupyter notebooks 不可或缺的一部分。您处于命令模式 (Esc) 或编辑模式 (Enter),但我想通过一组快捷方式使用 Jupyter 笔记本,就好像我正在编辑单个文档一样。 #nomodes.

除了默认快捷方式外,JupyterLab 中几乎没有特定于模式的快捷方式。大多数在命令模式下 运行 的命令无需先退出编辑模式即可 运行。

我们可以非常接近 modeless editing in Jupyter by using a shortcut that's independent of the current mode. There are instructions on how to customize the keyboard shortcuts here

例如,cut-cell 命令的默认快捷方式是 x。这可以替换为快捷方式 Accel Ctrl X。这可以在任何一种模式下使用,而不会干扰编辑。只需将以下内容添加到“用户首选项”面板中:

{"shortcuts": [
  {
    "command": "notebook:cut-cell",
    "disabled": true,
    "keys": ["X"],
    "selector": ".jp-Notebook:focus"
  },
  {
    "command": "notebook:cut-cell",
    "keys": ["Accel Ctrl X"],
    "selector": "body"},
  }
]}

每个默认命令模式快捷方式应修改如下:

  1. 为快捷方式添加通用修饰符前缀(例如 Accel Ctrl)。 Accel 只是键盘上 Super/Command/Windows 键的 Jupyter 术语。
  2. 为编辑模式保持相同的快捷键。关键的见解是使用 "selector": "body"。该选择器可以针对两种模式。
  3. 与任何默认快捷方式覆盖一样,确保将原始快捷方式标记为 "disabled: true"

或者,您可以将相同的快捷方式复制两次:

  • 一个用于 "selector": ".jp-Notebook.jp-mod-editMode" 的编辑模式。
  • 一个用于 "selector": ".jp-Notebook:focus" 的命令模式。

notebook:run-cell的默认快捷键实际上是这样设置的。 但是我 运行 没有遇到使用“body”作为选择器的麻烦。

请注意:这是一项相当繁琐且容易出错的练习。有几十个默认快捷方式需要修改。