closuresipython中的自动closures圆括号

我保持与ipython的开发分支最新(因为ipython是非常有史以来最令人敬畏的事情)。 相当近(在昨天的真棒ipython 2.0版本之前),我注意到它已经开始自动closures括号,括号,引号等,因为我键入它们。 它发生在两个terminal[没有别的我在terminal使用它]和笔记本会话,所以我认为这是开发人员有意的select。 我可以尊重其他人可能会喜欢这个function,但是这使我完全疯狂

我在configuration文件中找不到任何选项。 我甚至不能谷歌,因为我不知道它叫什么。 唯一出现的是自动括号的不同function。 我确实发现了这个问题 ,但那已经很久了,并且表明我看到的行为不可能发生。

如何closures此function?

[我主要是使用笔记本界面,所以只要把它关掉就行了,但我更喜欢在笔记本电脑和ipython会议terminalclosures它。]

@ minrk的答案是解决scheme的肉骨头,但是您需要将其封装在初始化callback中,至less在IPython-3.1.0 。 在你的custom.js

 require(['base/js/namespace', 'base/js/events'], function(IPython, events) { events.on('app_initialized.NotebookApp', function() { IPython.CodeCell.options_default.cm_config.autoCloseBrackets = false; }); }); 

感谢@Mike对IPython的RequireJS依赖加载的评论,以及指向IPython / Jupyter安装扩展的更好的公式的指针。

编辑Jupyter 4.0.x

当前的IPython笔记本实现Jupyter 4.0.0改进了JS定制。 现在它默认使用~/.jupyter/custom/custom.js ,并且需要在全局范围内使用以下代码replace整个require(... events.on(...))代码片段:

 IPython.CodeCell.options_default.cm_config.autoCloseBrackets = false; 

同样,如果你想使用jQuery来操纵任何东西,直接使用jQuery全局。 例如,我喜欢隐藏默认的固定标题,这为我的代码提供了另一个40px的空间,我发现它总是比Jupyter标识更有价值:

 jQuery('#header-container').hide(); 

笔记本的行为是CodeMirror autoCloseBrackets插件的结果。 你可以通过编辑(如果你还没有ipython profile create创build它) ~/.ipython/profile_default/static/custom/custom.js并添加:

 if (IPython.CodeCell) { IPython.CodeCell.options_default.cm_config.autoCloseBrackets = false; } 

至于terminal,我没有看到你描述的括号行为。 你可能定义了一个PYTHONSTARTUP? IPython默认执行这个文件,你可以通过添加~/.ipython/profile_default/ipython_config.py来禁用这个文件:

 c.InteractiveShellApp.exec_PYTHONSTARTUP = False 

在Jupyter 4.0.6中,这对我有用:

 require(['notebook/js/codecell'], function (codecell) { codecell.CodeCell.options_default.cm_config.autoCloseBrackets = false; }) 

~/.jupyter/custom/custom.js

顺便说一句,如果你还想closures匹配圆括号的语法高亮:

 codecell.CodeCell.options_default.cm_config.matchBrackets = false; 

如果你想从python中做到这一点:

 from notebook.services.config import ConfigManager c = ConfigManager() c.update('notebook', {"CodeCell": {"cm_config": {"autoCloseBrackets": False}}}) 

Jupyter 4.3.0 Jupyter Notebook 5.0.0以上build议并不适用于我

我发现我需要用以下内容创build一个名为~/.jupyter/custom/custom.js的文件:

 var cell = Jupyter.notebook.get_selected_cell(); var patch = { CodeCell: { cm_config: { autoCloseBrackets: false, } } } cell.config.update(patch); 

请注意,在执行此操作之前,目录~/.juypter/custom不存在。

这是从v5.0文档中的build议一起黑客攻击,未来的读者是最新的

对于Jupyter笔记本5.1使用与4.2相同的东西,即把下面的代码片段放到〜/ .jupyter / custom / custom.js中:

 require(['notebook/js/codecell'], function (codecell) { codecell.CodeCell.options_default.cm_config.autoCloseBrackets = false; }) 

我发现在其他答案中没有提到它。 在我的情况下(OS X,Jupyter 4.2.0),custom.js位于〜/ anaconda / lib / python3.5 / site-packages / notebook / static / custom / custom.js

我认为这可能会帮助像我这样的人。