我在配置文件中找不到任何相关选项。我甚至无法通过谷歌搜索得到结果,因为我不知道它叫什么。唯一能找到的是括号自动匹配这个不同的功能。实际上,我确实找到了这个问题,但那很旧了,而且回答说我看到的行为不可能发生。
我该如何关闭这个功能?[我主要只在笔记本界面使用,所以在那里关闭就可以了,但我更希望同时在笔记本和终端的ipython会话中关闭它。]
@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 notebook 实现,Jupyter 4.0.0,改进了 JS 自定义。它现在默认使用 ~/.jupyter/custom/custom.js
,你需要将整个 require(... events.on(...))
片段替换为以下全局范围内的代码:
IPython.CodeCell.options_default.cm_config.autoCloseBrackets = false;
jQuery
。例如,我喜欢默认隐藏固定标题,这为我的代码提供了另外40像素的空间,我认为这比一直看Jupyter标志更有价值:jQuery('#header-container').hide();
针对 Jupyter ≥ 4.0.6 进行编辑(但是小于 Jupyter Lab):
如果上面的 custom.js
解决方案不起作用,请尝试将以下内容添加到您的 ~/.jupyter/nbconfig/notebook.json
文件中:
{
"CodeCell": {
"cm_config": {
"autoCloseBrackets": false
}
}
}
笔记本行为是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
$ ipython profile create
将会提示创建一个.py
文件。请勿编辑该文件,而是像答案所说的那样编辑~/.ipython/profile_default/static/custom/custom.js
文件。有没有办法关闭烦人的自动括号匹配功能,这样大家才能愉快地敲代码呢? - 7stud〜/ .ipython
并从头开始)。有什么办法在更新的版本中实现它吗?此外,如何消除更烦人的引号自动关闭行为? - naught101如果你想仅使用Python完成此操作:
from notebook.services.config import ConfigManager
c = ConfigManager()
c.update('notebook', {"CodeCell": {"cm_config": {"autoCloseBrackets": False}}})
cmd+R
或 F5
)使其生效。 - Louis Yang这是我在 Jupyter 4.0.6 中使用的方法:
require(['notebook/js/codecell'], function (codecell) {
codecell.CodeCell.options_default.cm_config.autoCloseBrackets = false;
})
在~/.jupyter/custom/custom.js
文件中。
顺便提一句,如果你想关闭匹配括号的语法高亮:
codecell.CodeCell.options_default.cm_config.matchBrackets = false;
autoClosingBrackets
插件。前往Settings --> Advanced Settings Editor
并在User Overrides
部分添加以下内容:{
"codeCellConfig": {
"autoClosingBrackets": false
}
}
屏幕截图
这适用于JupyterLab 0.32.1和jupyter_core 4.4.0。
对我来说,在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);
~/.jupyter/custom
不存在。对于Jupyter Notebook 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
我认为这可能会对像我一样的人有所帮助。
$
,因为启动过程已经改变。正如我在这个答案中指出的那样,你可以从现在创建的custom.js
中看到,需要使用require
。 - Mikefrom notebook.services.config import ConfigManager ; c = ConfigManager() ; c.update('notebook', {"CodeCell": {"cm_config": {"autoCloseBrackets": False}}})
,特别是当该配置文件已存在时。 - T. Zack Crawford