在Jupyter笔记本电脑中,在向单元格分配Markdown或标题类型时立即进入编辑模式

时间:2015-08-23 21:13:47

标签: ipython-notebook jupyter

我想配置我的Jupyter笔记本(Firefox,OSX,虽然这应该无关紧要),表现如下:

当为单元格指定Markdown或标题类时,它应立即切换到编辑模式。在标题的情况下,光标应位于之后哈希标记。

细胞失去焦点时会自动渲染(模糊)。

总的想法是让笔记本的行为处于“模态不足”的状态。办法;不像vi,更像是Emacs和Mathematica笔记本。

据推测,这可以通过向custom.js添加键绑定代码来完成。

谢谢!

1 个答案:

答案 0 :(得分:2)

(假设默认配置文件和类Unix系统),以下代码进入〜/ .ipython / profile_default / static / custom / custom.js

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

/* this is a utility function */
function set_editable_heading(event, level){
    event.notebook.command_mode();
    event.notebook.to_heading(undefined, level);
    event.notebook.edit_mode();

    var cm = event.notebook.get_selected_cell().code_mirror;
    cm.setCursor({line:0, ch: level+1 });
    cm.on("blur", function(){ 
        event.notebook.get_selected_cell().render(); 
    });
    return false;
}

/* ... and analogously for other heading levels and for the command mode 
   (... command_shortcuts.add_shortcut() )
 */
IPython.keyboard_manager.edit_shortcuts.add_shortcut('ctrl-1', {
    help: 'Set cell to Heading 1, editable',
    handler: function (event) {
        set_editable_heading(event, 1);
        return false;
    }
});

IPython.keyboard_manager.edit_shortcuts.add_shortcut('ctrl-m', {
    help: 'Set cell to markdown, editable',
    handler: function (event) {
        event.notebook.command_mode();
        event.notebook.to_markdown();

        event.notebook.get_selected_cell().code_mirror.on("blur", function(){ 
            event.notebook.get_selected_cell().render(); 
        });

        event.notebook.edit_mode();
        return false;
    }
});

return true; 
});