Mik*_*ike 76 ipython ipython-notebook
我和ipython的dev分支保持同步(因为ipython几乎是最棒的东西).最近(在昨天令人敬畏的ipython 2.0发布之前)我注意到它已经开始自动关闭括号,括号,引号等,因为我输入它们.它发生在两个终端[我在终端中使用的其他东西都没有]和笔记本会话,所以我认为这是开发人员的有意选择.我可以尊重其他人可能喜欢这个功能,但它让我完全疯了.
我在配置文件中找不到任何选项.我甚至不能谷歌,因为我不知道它叫什么.唯一出现的是自动括号的不同特征.我确实找到了这个问题,但那已经过时了,并且暗示我所看到的行为不会发生.
如何关闭此功能?
[我大多只是使用笔记本界面,所以只需将其关闭就可以了,但我更愿意在终端的笔记本和ipython会话中关闭它.]
chb*_*own 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;
});
});
Run Code Online (Sandbox Code Playgroud)
感谢@Mike关于IPython RequireJS依赖加载的评论以及指向IPython/Jupyter安装扩展的更好配方的指针.
编辑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;
Run Code Online (Sandbox Code Playgroud)
同样,如果你想使用jQuery来操作任何东西,只需jQuery直接使用全局.例如,我喜欢默认隐藏固定标头,这为我的代码提供了另外40px的空间,我发现它比一直查看Jupyter标识更有价值:
jQuery('#header-container').hide();
Run Code Online (Sandbox Code Playgroud)
min*_*nrk 24
笔记本行为是CodeMirror autoCloseBrackets插件的结果.你可以通过编辑关闭它(ipython profile create如果你还没有创建它)~/.ipython/profile_default/static/custom/custom.js并添加:
if (IPython.CodeCell) {
IPython.CodeCell.options_default.cm_config.autoCloseBrackets = false;
}
Run Code Online (Sandbox Code Playgroud)
至于终端,我没有看到你描述的括号行为.你是否定义了PYTHONSTARTUP?IPython默认执行此文件,您可以通过添加到~/.ipython/profile_default/ipython_config.py以下命令来禁用该文件:
c.InteractiveShellApp.exec_PYTHONSTARTUP = False
Run Code Online (Sandbox Code Playgroud)
小智 11
这对我在Jupyter 4.0.6中有用:
require(['notebook/js/codecell'], function (codecell) {
codecell.CodeCell.options_default.cm_config.autoCloseBrackets = false;
})
Run Code Online (Sandbox Code Playgroud)
在 ~/.jupyter/custom/custom.js.
顺便说一句,如果您还想关闭匹配括号的语法高亮显示:
codecell.CodeCell.options_default.cm_config.matchBrackets = false;
Run Code Online (Sandbox Code Playgroud)
Sea*_*n D 11
如果你想从python中做到这一点:
from notebook.services.config import ConfigManager
c = ConfigManager()
c.update('notebook', {"CodeCell": {"cm_config": {"autoCloseBrackets": False}}})
Run Code Online (Sandbox Code Playgroud)
上面的建议在Jupyter 4.3.0和Jupyter Notebook 5.0.0中没有用
我发现我需要创建一个名为~/.jupyter/custom/custom.js以下内容的文件:
var cell = Jupyter.notebook.get_selected_cell();
var patch = {
CodeCell: {
cm_config: {
autoCloseBrackets: false,
}
}
}
cell.config.update(patch);
Run Code Online (Sandbox Code Playgroud)
请注意,在执行~/.juypter/custom此操作之前,该目录不存在.
这是从v5.0文档中的建议一起入侵的,对于未来的读者来说,这些都是最新的
在 Jupyter Lab Notebook 中,您可以autoClosingBrackets在设置菜单中关闭插件。转到Settings --> Advanced Settings Editor并在该User Overrides部分中添加以下内容:
{
"codeCellConfig": {
"autoClosingBrackets": false
}
}
Run Code Online (Sandbox Code Playgroud)
截屏

这适用于 JupyterLab 0.32.1 和 jupyter_core 4.4.0