如何将命令绑定到“重新启动并全部运行”?

时间:2015-09-14 21:06:33

标签: ipython-notebook jupyter

我最近有一个Jupyter版本而不是一个菜单动作,允许你重启&全部运行

enter image description here

我想添加一个绑定到此操作的键盘快捷键。我看过documentation 用于键盘自定义,但我仍然不确定如何添加键盘快捷键。

我已经从源代码构建了Juypter,因此根据帮助,我似乎需要向notebook/static/custom/custom.js添加一些代码。

我尝试添加以下内容:

IPython.keyboard_manager.command_shortcuts.add_shortcut('meta-r', function (event) {
        IPython.notebook.restart_kernel();
        IPython.notebook.execute_run_all();
        return false;
});

然而,当我按 [Meta-r] 时,内核似乎重启,但 execute_run_all()没有被执行。

3 个答案:

答案 0 :(得分:8)

从Jupyter Notebook 5.0开始,您现在可以直接在菜单选项中创建和编辑键盘快捷键。截至目前,这是帮助 - >编辑键盘快捷键。该对话框底部有一个指南。

上面的文档在这里: http://jupyter-notebook.readthedocs.io/en/latest/examples/Notebook/Custom%20Keyboard%20Shortcuts.html

答案 1 :(得分:6)

这是我custom.js中的内容。要使其正常工作,必须在初始化应用程序后添加快捷方式:

$([Jupyter.events]).on("app_initialized.NotebookApp", function () {
    Jupyter.keyboard_manager.command_shortcuts.add_shortcut('0,1', {
    help: 'restart and run all',
    help_index: '0,1',
    handler: function (event) {
      Jupyter.notebook.kernel.restart();
      restartTime = 2000 // decrease this if you have a fast computer
      setTimeout(function(){ Jupyter.notebook.execute_all_cells(); }, restartTime);
      return false;
    }}
  );
});

答案 2 :(得分:3)

以防万一有人偶然发现这篇文章寻找相同的答案:你需要等待内核在执行前以超时重启。 请参阅此discussion on GitHub

在你的情况下,它会给出:

IPython.keyboard_manager.command_shortcuts.add_shortcut('meta-r',
  function (event) {
      IPython.notebook.kernel.restart();
      setTimeout(function(){ IPython.notebook.execute_all_cells(); }, 1000);
      return false;
});