如何在ipython笔记本中启用换行

时间:2013-12-19 02:42:56

标签: python ipython ipython-notebook

我一直在尝试在ipython笔记本中启用换行。我用Google搜索没有结果,我在终端输入了ipython notebook --help。这为配置文件提供了大量配置命令,但没有换行。有谁知道ipnotebook是否具有此功能,如果有,如何启用它? 非常感谢您的帮助。谢谢。

3 个答案:

答案 0 :(得分:11)

正如@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;
            }
        );
    }
);

答案 1 :(得分:4)

为了在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;
});

答案 2 :(得分:1)

大多数笔记本都是由Codemirror驱动的,因此你搜索的选项是this one问题是我们没有简单的方法将配置传递给CodeMirror,所以你必须弄清楚一些javascript un {{1将配置应用于正确的对象。

从我的头顶和handwaving:我会说custom.js les IPython.CodeCell.default_options.cm为true然后循环lineWrapping(已经实例化的对象)抓住他们的IPython.notebook.get_cells()属性, editor

你可以创建一个JS扩展来实现它并提出(并获取灵感)here