Jupyter lab 快捷键

38

我已经使用Jupyter Notebooks几年了,最近转用Jupyter Lab,但是发现缺乏快捷键让人感到困扰。

例如,我注意到可以在左侧面板中搜索命令。 但我似乎无法轻松地将它们绑定到键盘快捷键上,这有可能吗?

例如,我想使用“O”折叠当前单元格输出,使用“Shift O”折叠所有代码单元格。

输入图像描述


你能否将JupyterLab调整为更易用的设置,还是仍然坚持使用NB? - xappppp
6个回答

38

这个问题在GitHub上已经得到解答,点此查看。你还可以在这里查找正确的command名称,以便在键盘快捷方式中进行用户覆盖,因为它们并不总是与侧边栏中显示的相同。

以下是我使用的一些命令:

{
  "shortcuts": [
    {
      "command": "notebook:hide-cell-outputs",
      "keys": [
        "O"
      ],
      "selector": ".jp-Notebook:focus"
    },    
    {
      "command": "notebook:show-cell-outputs",
      "keys": [
        "O", 
        "O"
      ],
      "selector": ".jp-Notebook:focus"
    },    

    {
      "command": "notebook:hide-all-cell-outputs",
      "keys": [
        "Ctrl L"
      ],
      "selector": ".jp-Notebook:focus"
    },

    {
      "command": "notebook:hide-all-cell-code",
      "keys": [
        "Shift O"
      ],
      "selector": ".jp-Notebook:focus"
    }
  ]
}

按一次O即可隐藏单元格输出,再按一次O即可显示单元格输出。最后,按下Shift + O可折叠所有单元格代码,正如您所要求的那样。


3
啊,我找到了原因:第二个快捷键也使用了 "O",因此它会等待看是否输入了第二个 "O"。如果我注释掉第二个键盘快捷键,它就像预期的那样工作。 - Fabian Ying
很好,这里的东西,有没有一段代码可以隐藏所选单元格的代码? - xappppp
1
@jeschwar:是否有一个干净的列表,列出了可以包括在键盘快捷方式覆盖中的所有可能命令?他们没有一个主列表,在那里你可以进行更改,这似乎很奇怪。否则,人们怎么知道命令的名称呢? - teepee
1
@Nemo 从这里开始,“您需要将其格式化,以便有一个带有多个条目的“快捷方式”列表:”。 - Wes Turner
我仍然会过来复制这个设置。 - pakira79
显示剩余4条评论

20

在高级设置的键盘快捷键中,这段代码可以很好地将单元格向上或向下移动。

{
    // Move cell up
    "shortcuts": [
        {
      "selector": ".jp-Notebook:focus",
      "command": "notebook:move-cell-up",
      "keys": [
        "Alt ArrowUp"
      ]
        },
    // Move cell down
        {
      "selector": ".jp-Notebook:focus",
      "command": "notebook:move-cell-down",
      "keys": [
        "Alt ArrowDown"
      ]
    }
    ]

}

上下移动单元格


9

我使用以下设置将单元格向上/向下移动的操作绑定到Ctrl + Up /Down:

{
    // Move cell up
    "notebook:move-cell-up": {
      "selector": ".jp-Notebook:focus",
      "command": "notebook:move-cell-up",
      "keys": [
        "Ctrl ArrowUp"
      ]
    },

    // Move cell down
    "notebook:move-cell-down": {
      "selector": ".jp-Notebook:focus",
      "command": "notebook:move-cell-down",
      "keys": [
        "Ctrl ArrowDown"
      ]
    }
}

3

结合上面pX0r和plalanne的回答,经过微小的修改,对我很有用,逐步迭代可能对像我这样的初学者有所帮助。总结如下:

  1. 在设置选项卡下打开高级设置编辑器,或在Mac上使用command ,
  2. 导航到"键盘快捷键"。您应该看到plalanne给出的屏幕。
  3. 使用pX0r的代码,但在键绑定中进行一次更改,因为在Mac上Ctrl Arrowup已被保留查看所有运行的应用程序(如果您以这种方式设置它)。同样,Shift Arrowup用于选择多个单元格。因此,我选择了Alt Arrowup。请注意,您Mac键盘上的键说alt/option。您必须将其称为Alt才能起作用。这就是它的全部内容。将以下代码复制到右窗格中的"用户覆盖"中。
  4. 重新打开笔记本并测试是否按预期工作。
  5. 只要在GitHub上定义了该命令ID,您就可以按照此方式自定义更多键。在很大程度上,您所需的所有命令ID都是从第72行开始的。
{
    // Move cell up
    "notebook:move-cell-up": {
      "selector": ".jp-Notebook:focus",
      "command": "notebook:move-cell-up",
      "keys": [
        "Alt ArrowUp"
      ]
    },

    // Move cell down
    "notebook:move-cell-down": {
      "selector": ".jp-Notebook:focus",
      "command": "notebook:move-cell-down",
      "keys": [
        "Alt ArrowDown"
      ]
    }
}

1
你应该编辑位于Settings/Keyboard Shortcuts的设置文件。在这里:

Jupyter lab keyboard shortcut

在那里,您可以指定任何自定义快捷方式!


是的,我看到了。但我认为我想要的特定命令不可用。 - Daniel Severo
确实。我设定了一些自定义快捷键,但是没有找到你提到的命令。 - plalanne

1
如果您无法保存“用户首选项”设置并出现语法错误
[附加属性错误] 命令不是有效属性
您可能已经错过了在“快捷方式”列表中嵌套的步骤,如此处所述。另外,为了覆盖旧设置,您可以按照以下步骤操作,以Activate Next Tab和Activate Previous Tab为例:
{
    "shortcuts": [
        {
            "command": "application:activate-next-tab",
            "keys": [
                "Ctrl Shift ]"
            ],
            "selector": "body",
            "disabled": true  // disable old setting
        },
        {
            "command": "application:activate-previous-tab",
            "keys": [
                "Ctrl Shift ["
            ],
            "selector": "body",
            "disabled": true  // disable old setting
        },
        {
            "command": "application:activate-next-tab",
            "keys": [
                "Ctrl 1"  // enable new shortcut key
            ],
            "selector": "body"
        },
        {
            "command": "application:activate-previous-tab",
            "keys": [
                "Ctrl 2"  // enable new shortcut key
            ],
            "selector": "body"
        }
    ]
}

现在你可以点击保存并刷新浏览器,以使新的设置生效。

这与问题无关。 - Daniel Severo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接