在jupyter笔记本中禁用Ctrl + Enter sublime keymap

时间:2016-04-03 11:36:54

标签: windows sublimetext key-bindings codemirror jupyter-notebook

我使用Jupyter Notebook和Sublime Text键映射,将以下内容添加到我的Jupyter custom.js中:

require(["codemirror/keymap/sublime", "notebook/js/cell"], 
function(sublime_keymap, cell) {
    cell.Cell.options_default.cm_config.keyMap = 'sublime';
});

...除了我在Windows机器上之外,它主要起作用,这增加了" insertLineAfter"的Sublime功能。到Ctrl + Enter的绑定,这是我不想要的,因为Ctrl + Enter是在Jupyter中执行当前单元格的绑定。

有没有人知道如何禁用" insertLineAfter"按Ctrl + Enter绑定吗?

3 个答案:

答案 0 :(得分:7)

以下为我工作:

require(["codemirror/keymap/sublime", "notebook/js/cell", "base/js/namespace"],
    function(sublime_keymap, cell, IPython) {
        cell.Cell.options_default.cm_config.keyMap = 'sublime';
        cell.Cell.options_default.cm_config.extraKeys["Ctrl-Enter"] = function(cm) {}
        var cells = IPython.notebook.get_cells();
        for(var cl=0; cl< cells.length ; cl++){
            cells[cl].code_mirror.setOption('keyMap', 'sublime');
            cells[cl].code_mirror.setOption("extraKeys", {
                "Ctrl-Enter": function(cm) {}
            });
        }
    } 
);

答案 1 :(得分:4)

您可以通过注释掉以下行来阻止ctrl + enter在jupyter笔记本中生成一个新行:

cmds[map[ctrl + "Enter"] = "insertLineAfter"] = function(cm) { insertLine(cm, false); };

在文件中:

[python lib path]/dist-packages/notebook/static/components/codemirror/keymap/sublime.js

答案 2 :(得分:0)

可以使用unbound文件中的Default (OS).sublime-keymap命令禁用单个Sublime Text键绑定。即Menu --> Preferences --> Key Bindings - User。在您的情况下,只需添加以下行。

{ "keys": ["ctrl+enter"], "command": "unbound" }

由于Add Line.sublime-macro非常有用,您可能希望为其提供另一个绑定,例如,您可以使用alt+entersuper+enter,在这种情况下,您可以添加以下内容。

{ "keys": ["ctrl+enter"], "command": "unbound" }

{ "keys": ["alt+enter"], "command": "run_macro_file", "args": 
    {"file": "res://Packages/Default/Add Line.sublime-macro"} },