在 Jupyter Notebook 笔记本中,将 Markdown 或标题类型分配给单元格时立即进入编辑模式
In Jupyter notebook notebook, going into editing mode immediately when assigning Markdown or headings types to cells
我想配置我的 Jupyter notebook(Firefox,OSX,尽管这应该无关紧要)的行为如下:
当单元格被分配 Markdown 或标题 class 时,它应该立即切换到编辑模式。在标题的情况下,光标应位于 之后 井号。
单元格应在失去焦点(模糊)时自动呈现。
总体思路是让笔记本以 "less modal" 方式运行;不像 vi,而更像 Emacs 和 Mathematica 笔记本。
大概这可以通过向 custom.js 添加键绑定代码来完成。
谢谢!
(假设默认配置文件和类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;
});
我想配置我的 Jupyter notebook(Firefox,OSX,尽管这应该无关紧要)的行为如下:
当单元格被分配 Markdown 或标题 class 时,它应该立即切换到编辑模式。在标题的情况下,光标应位于 之后 井号。
单元格应在失去焦点(模糊)时自动呈现。
总体思路是让笔记本以 "less modal" 方式运行;不像 vi,而更像 Emacs 和 Mathematica 笔记本。
大概这可以通过向 custom.js 添加键绑定代码来完成。
谢谢!
(假设默认配置文件和类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;
});