我与ipython的开发分支保持同步(因为ipython几乎是有史以来最棒的东西)。最近(在昨天令人敬畏的ipython 2.0发布之前)我注意到它已经开始自动关闭括号,括号,引号等,因为我输入它们。它发生在两个终端[我在终端中使用的其他东西都没有]和笔记本会话,所以我认为这是开发人员的有意选择。我可以尊重其他人可能喜欢这个功能,但它驱使我完全疯了。
我在配置文件中找不到任何选项。我甚至不能谷歌,因为我不知道它叫什么。唯一出现的是automatic parentheses的不同特征。我确实找到了this question,但那已经过去了,并且表明我所看到的行为不会发生。
如何关闭此功能?
[我大多只是使用笔记本界面,所以只需将其关闭就可以了,但我更愿意在终端的笔记本和ipython会话中关闭它。]
答案 0 :(得分:30)
@ minrk的答案是修复的主要内容,但您需要将其包装在初始化回调中,至少使用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 Installing Extensions更好的表述指针发表评论。
编辑Jupyter 4.0.x
:
当前的IPython笔记本实现Jupyter 4.0.0改进了JS自定义。它现在默认使用~/.jupyter/custom/custom.js
,您需要在全局范围内仅使用以下内容替换整个require(... events.on(...))
代码段:
IPython.CodeCell.options_default.cm_config.autoCloseBrackets = false;
同样,如果你想使用jQuery来操作任何东西,只需直接使用jQuery
全局。例如,我喜欢默认隐藏固定的标题,这为我的代码提供了另外40px的空间,我发现它比查看Jupyter标识更有价值:
jQuery('#header-container').hide();
答案 1 :(得分:24)
笔记本行为是CodeMirror autoCloseBrackets插件的结果。您可以通过编辑将其关闭(如果您还没有ipython profile create
创建~/.ipython/profile_default/static/custom/custom.js
并添加:
if (IPython.CodeCell) {
IPython.CodeCell.options_default.cm_config.autoCloseBrackets = false;
}
至于终端,我没有看到你描述的括号行为。你是否定义了PYTHONSTARTUP? IPython默认执行此文件,您可以通过添加到~/.ipython/profile_default/ipython_config.py
来禁用该文件:
c.InteractiveShellApp.exec_PYTHONSTARTUP = False
答案 2 :(得分:11)
这在Jupyter 4.0.6中对我有用:
require(['notebook/js/codecell'], function (codecell) {
codecell.CodeCell.options_default.cm_config.autoCloseBrackets = false;
})
~/.jupyter/custom/custom.js
中的。
BTW,如果您还想关闭匹配括号的语法高亮显示:
codecell.CodeCell.options_default.cm_config.matchBrackets = false;
答案 3 :(得分:10)
如果你只想从python中做到这一点:
from notebook.services.config import ConfigManager
c = ConfigManager()
c.update('notebook', {"CodeCell": {"cm_config": {"autoCloseBrackets": False}}})
答案 4 :(得分:5)
上述建议对Jupyter笔记本5.0.0的Jupyter 4.3.0不起作用
我发现我需要创建一个名为~/.jupyter/custom/custom.js
的文件,其中包含以下内容:
var cell = Jupyter.notebook.get_selected_cell();
var patch = {
CodeCell: {
cm_config: {
autoCloseBrackets: false,
}
}
}
cell.config.update(patch);
请注意,在我执行此操作之前,目录~/.juypter/custom
不存在。
答案 5 :(得分:4)
对于Jupyter Notebook 5.1使用与4.2相同的内容,即将以下代码段放入〜/ .jupyter / custom / custom.js:
require(['notebook/js/codecell'], function (codecell) {
codecell.CodeCell.options_default.cm_config.autoCloseBrackets = false;
})
答案 6 :(得分:3)
我发现在其他答案中没有提及。就我而言(OS X,Jupyter 4.2.0),custom.js位于 〜/安纳康达/ LIB / python3.5 /站点包/笔记本/静态/定制/ custom.js
我认为这可能对像我这样的人有所帮助。
答案 7 :(得分:1)
在Jupyter Lab 笔记本中,您可以关闭设置菜单中的autoClosingBrackets
插件。转到Settings --> Advanced Settings Editor
并在User Overrides
部分添加以下内容:
{
"codeCellConfig": {
"autoClosingBrackets": false
}
}
截图
这适用于JupyterLab 0.32.1和jupyter_core 4.4.0