Jupyter:将单元格移到笔记本顶部

Sam*_*fer 6 javascript jupyter jupyter-notebook

通常,我在笔记本中途发现自己忘记了导入,而是想将其移动到笔记本的顶部(我试图保留大部分导入)。有没有一种方法可以将键盘快捷方式添加到~/.jupyter/custom/custom.js将单元格移动到笔记本顶部的方式?

目前,我是通过剪切单元格,滚动到笔记本顶部,粘贴并向下滚动到我原来的位置(通常在返回的途中丢失位置)来完成此操作的。

以下是来自fastai论坛的一些代码,它们可以完成不同的任务:转到运行单元:

Jupyter.keyboard_manager.command_shortcuts.add_shortcut('CMD-I', {
    help : 'Go to Running cell',
    help_index : 'zz',
    handler : function (event) {
        setTimeout(function() {
            // Find running cell and click the first one
            if ($('.running').length > 0) {
                //alert("found running cell");
                $('.running')[0].scrollIntoView();
            }}, 250);
        return false;
    }
});
Run Code Online (Sandbox Code Playgroud)

问题的屏幕截图

use*_*729 2

它已部分记录;但是您必须了解一点 JavaScript 才能创建键盘快捷键。

正如您所想的,编辑custom.js以绑定键盘快捷键,如文档中所述(如果操作不是内置的,则必须使用第二种方法)

有关文档,请阅读源代码(在线阅读或site-packages/notebook/static/notebook/js/*.js如果您在本地安装了 jupyter)。特别是,actions.js包含示例绑定并notebook.js包含您可以在笔记本上调用的函数。

这是一个例子。它的缺点是修改了jupyter剪贴板。为了避免这种情况,您也许可以查看notebook.move_cell_down函数的源代码以了解它是如何实现的,并进行相应的修改。

Jupyter.keyboard_manager.command_shortcuts.add_shortcut('cmdtrl-I', {
    help : 'Move cell to first in notebook',
    handler : function (env) {
        var index = env.notebook.get_selected_index();
        env.notebook.cut_cell();
        env.notebook.select(0);
        env.notebook.paste_cell_above();
        env.notebook.select(index);
    }
});
Run Code Online (Sandbox Code Playgroud)