添加用于向上移动单元格和向下移动单元格的键盘快捷键

Eri*_*k V 4 ipython ipython-notebook jupyter jupyter-notebook

我正在尝试添加 Cntl+K 和 Cntl+J 快捷方式来快速上下移动单元格。我在 Github 上查看了有关添加快捷方式的问题,并找到了一个可行的答案:

“对于喜欢此快捷方式的人(如我),请将其添加到您的 ~/.ipython/profile_default/static/custom/custom.js:

$([IPython.events]).on("app_initialized.NotebookApp", function () {

IPython.keyboard_manager.command_shortcuts.add_shortcut('ctrl-k', function (event) {
    IPython.notebook.move_cell_up();
    return false;
});

IPython.keyboard_manager.command_shortcuts.add_shortcut('ctrl-j', function (event) {
    IPython.notebook.move_cell_down();
    return false;
});
Run Code Online (Sandbox Code Playgroud)

});

但是我的 users/{my name}/.ipython/profile_default 目录没有静态文件夹。我尝试添加丢失的文件夹和 custom.js 文件,并重新打开 Anaconda 提示,但这并没有添加丢失的快捷方式。

另一个答案有同样的问题:

“使用以下内容:

$ cat ~/.jupyter/custom/custom.js

define(["base/js/namespace"], function(Jupyter){
    console.info('Binding Ctrl-J/K to move cell up/down');
    Jupyter.keyboard_manager.command_shortcuts.add_shortcut('Ctrl-k','jupyter-notebook:move-cell-up');
    Jupyter.keyboard_manager.command_shortcuts.add_shortcut('Ctrl-j','jupyter-notebook:move-cell-down');
});
Run Code Online (Sandbox Code Playgroud)

这个答案也不起作用(添加丢失的文件夹和 custom.js 文件不起作用)。

Roc*_*oad 7

正如官方文档中所建议的(通过“帮助>笔记本”菜单操作获得),您可以先在实时笔记本中尝试。浏览器 javascript 控制台也有帮助。

我试过:


%%javascript

IPython.keyboard_manager.command_shortcuts.add_shortcut('Ctrl-k','jupyter-notebook:move-cell-up');
// replacing IPython with Jupyter should work as well:
Jupyterkeyboard_manager.command_shortcuts.add_shortcut('Ctrl-j','jupyter-notebook:move-cell-down');
Run Code Online (Sandbox Code Playgroud)

它可以工作,但是,就像单击相应的工具栏按钮时一样,控制台会警告弃用IPython.notebook.move_selection_up().

该字符串"jupyter-notebook:move-cell-up"指的是相同的操作。

所以我认为合理的做法是从头开始重新定义它:


IPython.keyboard_manager.command_shortcuts.add_shortcut('Ctrl-k', {
    help : 'move up selected cells',
    help_index : 'jupyter-notebook:move-selection-up',
    handler : function (event) {
        IPython.notebook.move_selection_up();
        return false;
    }}
);

IPython.keyboard_manager.command_shortcuts.add_shortcut('Ctrl-j', {
    help : 'move down selected cells',
    help_index : 'jupyter-notebook:move-selection-down',
    handler :  function (event) {
        IPython.notebook.move_selection_down();
        return false;
    }}
);
Run Code Online (Sandbox Code Playgroud)

执行 notbook 单元(或浏览器控制台中的代码)后,它应该处于活动状态,您可以对其进行试验。

一旦满意,请使用 来检查您的 jupyter 配置文件的路径!jupyter --config,然后您就会知道在哪里复制您的代码:<profile>/static/custom/custom.js 以便它在下一个 jupyter 会话中处于活动状态。