【问题标题】:How to enable line wrapping in ipython notebook如何在 ipython 笔记本中启用换行
【发布时间】:2013-12-19 02:42:56
【问题描述】:

我一直在尝试在 ipython 笔记本中启用换行。我用谷歌搜索没有结果,我在终端中输入了 ipython notebook --help 。这给了我大量的配置文件配置命令,但没有换行。有谁知道 ipnotebook 是否有这个功能,如果有,如何启用它? 您的帮助将不胜感激。谢谢。

【问题讨论】:

    标签: python ipython ipython-notebook


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      为了在 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.js 文件位于 python3.?/site-packages/IPython/html/static/custom/ 中。例如,在我的 OS-X 10.10 python3.4 alt-install 上,它位于:/usr/local/lib/python3.4/site-packages/IPython/html/static/custom/custom.js。如果找不到,请使用 find 实用程序(例如,find / -name 'custom.js'),并确保您正在查看正确的 Python 树。 :)
      • 我有一个使用custom.css 的Ipython Notebook,当输入custom.js 文件时,上面的代码不起作用。由于某种原因,代码单元格文本换行不起作用
      【解决方案3】:

      大部分笔记本都由 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

      【讨论】:

        猜你喜欢
        • 2021-12-27
        • 1970-01-01
        • 2015-08-21
        • 2014-02-03
        • 1970-01-01
        • 2014-09-14
        • 2014-09-16
        • 2015-10-14
        • 1970-01-01
        相关资源
        最近更新 更多