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
我认为这可能会帮助像我这样的人。