【发布时间】:2013-12-19 02:42:56
【问题描述】:
我一直在尝试在 ipython 笔记本中启用换行。我用谷歌搜索没有结果,我在终端中输入了 ipython notebook --help 。这给了我大量的配置文件配置命令,但没有换行。有谁知道 ipnotebook 是否有这个功能,如果有,如何启用它? 您的帮助将不胜感激。谢谢。
【问题讨论】:
标签: python ipython ipython-notebook
我一直在尝试在 ipython 笔记本中启用换行。我用谷歌搜索没有结果,我在终端中输入了 ipython notebook --help 。这给了我大量的配置文件配置命令,但没有换行。有谁知道 ipnotebook 是否有这个功能,如果有,如何启用它? 您的帮助将不胜感激。谢谢。
【问题讨论】:
标签: python ipython ipython-notebook
正如@Matt 指出的,您必须配置 CodeMirror 以启用包装。
但是,这可以通过简单地将以下行添加到您的 custom.js 来实现:
IPython.Cell.options_default.cm_config.lineWrapping = true;
因此无需遍历所有单元格。
以类似的方式,您可以启用line numbers,设置indentation depth 等等(有关其他选项,请参阅@Matt 发布的链接)。 custom.js 的位置取决于您的操作系统(在我的 Ubuntu 机器上是 ~/.ipython/profile_default/static/custom)。
在 IPython 3 中,普通调用不再起作用,因此需要将设置放在适当的事件处理程序中。一个可能的解决方案可能如下所示:
define([
'base/js/namespace',
'base/js/events'
],
function(IPython, events) {
events.on("app_initialized.NotebookApp",
function () {
IPython.Cell.options_default.cm_config.lineWrapping = true;
}
);
}
);
【讨论】:
为了在 ipython 3 的笔记本中实现换行,我使用了 the answer @Jakob linked above 和 @Jakob 的实际答案。在我的情况下,使用单行代码不起作用 - 但是将以下内容添加到 custom.js 可以:
$([IPython.events]).on('app_initialized.NotebookApp', function(){
IPython.CodeCell.options_default['cm_config']['lineWrapping'] = true;
});
【讨论】:
custom.css 的Ipython Notebook,当输入custom.js 文件时,上面的代码不起作用。由于某种原因,代码单元格文本换行不起作用
大部分笔记本都由 Codemirror 提供支持,因此您搜索的选项是 this one 问题是我们没有简单的方法将配置传递给 CodeMirror,因此您必须找出一些 javascript un custom.js 才能应用配置到正确的对象。
从我的头顶挥手:我会说IPython.CodeCell.default_options.cm les lineWrapping 为true,然后循环通过IPython.notebook.get_cells()(已经实例化的对象)获取他们的editor 属性和setOption('lineWrapping',true)。
您可以制作一个 JS 扩展来执行此操作并提出(并获得灵感)here。
【讨论】: