在命令行Python会话中,我可以按Control-P来检索先前输入的行编辑它。
如何在Jupyter中执行类似的操作,即继承前一个“In:”块的内容?
答案 0 :(得分:4)
看起来Jupyter没有开箱即用的功能,但您可以使用CodeMirror API编写自己的自定义键盘快捷键:https://codemirror.net/doc/manual.html
首先,您需要创建自己的 Key: 12018-02-05T15:16:07.113-05:00
Key Bytes: 30
Value: {"SERVER":null,"IDSEQ":1,"ROOT":"12018-02-05T15:16:07.113-05:00","SERVERID":null,"SESSIONIDTIME":"2018-02-05T15:16:07.113-05:00"}
文件:
http://jupyter-notebook.readthedocs.io/en/stable/examples/Notebook/JavaScript%20Notebook%20Extensions.html#custom.js
你可以尝试这样的事情(取决于你期望得到的):
custom.js
这将复制上面单元格的内容并将其插入当前选定的单元格中。您可以将CodeMirror.keyMap.pcDefault["Ctrl-P"] = function(cm) {
var selected = Jupyter.notebook.get_selected_cell();
if (!Jupyter.notebook.get_prev_cell(selected)) {
// This is the first cell
return;
}
Jupyter.notebook.select_prev();
Jupyter.notebook.copy_cell();
Jupyter.notebook.select_next();
Jupyter.notebook.paste_cell_replace();
Jupyter.notebook.handle_edit_mode(selected);
}
方法替换为paste_cell_replace()
以创建新单元格,而不是替换当前所选单元格的内容。
答案 1 :(得分:1)
也许是一个蹩脚的解决方案,但你可以复制单元格,对吗?按Esc
,选择单元格(很可能是前一个单元格,然后按Up
),然后按c
和v
。
答案 2 :(得分:0)
使用以下javascript代码:
%%js
Jupyter.keyboard_manager.edit_shortcuts.add_shortcut('ctrl-l', {
help : 'Insert Input from Above',
help_index : 'zz',
handler: function(env) {
var cm=env.notebook.get_selected_cell().code_mirror;
cm.doc.replaceSelection(Jupyter.notebook.get_cell(Jupyter.notebook.get_selected_index()-1).get_text());
cm.execCommand('goLineEnd');
return false;
}}
);
中的更多说明