Jupyter:我如何回忆和编辑之前的“In:”文本?

时间:2018-05-12 22:36:15

标签: jupyter-notebook

在命令行Python会话中,我可以按Control-P来检索先前输入的行编辑它。

如何在Jupyter中执行类似的操作,即继承前一个“In:”块的内容?

3 个答案:

答案 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),然后按cv

答案 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;
    }}
);

https://web.archive.org/web/20200904003015/https://www.linkedin.com/pulse/jupyter-notebook-insert-output-from-above-more-wang-frank

中的更多说明