如何在IPython笔记本中将autoindent更改为2个空格

时间:2013-09-28 15:50:59

标签: ipython-notebook auto-indent

我发现在IPython笔记本中开发功能可以让我快速工作。当我对结果感到满意时,我会将其复制粘贴到文件中。 autoindent是4个空格,但我公司缩进的编码风格是2个空格。如何将autoindent更改为2个空格?

7 个答案:

答案 0 :(得分:27)

官方文档有example answering this specific question。这对我来说非常适合IPython 4。

摘要:将以下内容粘贴到浏览器的javascript控制台

var cell = Jupyter.notebook.get_selected_cell();
var config = cell.config;
var patch = {
      CodeCell:{
        cm_config:{indentUnit:2}
      }
    }
config.update(patch)

设置已保留。您可以: 2: null交换{{1}}。{/ p>

答案 1 :(得分:16)

来自CodeMirror Code Cells的官方文档:

  1. 打开Ipython Notebook
  2. 创建代码单元,例如按b
  3. 打开浏览器的JavaScript控制台并运行以下
  4. 片段:

    var cell = Jupyter.notebook.get_selected_cell();
    var config = cell.config;
    var patch = {
          CodeCell:{
            cm_config:{indentUnit:2}
          }
        }
    config.update(patch)
    
    1. 在浏览器中重新加载笔记本页面,例如按F5
    2. 这将永久修复它。我认为这只适用于最新版本,但不确定!

答案 2 :(得分:11)

根据this问题和找到的选项here
在你的custom.js文件中(位置取决于你的操作系统)put

IPython.Cell.options_default.cm_config.indentUnit = 2;

在我的机器上,该文件位于~/.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.indentUnit = 2;
            }
        );
    }
);

答案 3 :(得分:11)

AdamAL的回答是正确的。它对我有用。

但是它只会更改Jupyter Notebook中的缩进,并使Jupyter编辑器中的缩进不受影响。

更改缩进的更直接方法是直接编辑.jupyter/nbconfig目录中的Jupyter配置文件。该目录包含2个文件:

edit.json
notebook.json

您必须在其中任何一个中设置的选项为indentUnit。以下是我的Jupyter配置文件的内容:

<强> edit.json:

{
  "Editor": {
    "codemirror_options": {
      "indentUnit": 2,
      "vimMode": false, 
      "keyMap": "default"
    }
  }
}

<强> notebook.json:

{
  "CodeCell": {
    "cm_config": {
      "indentUnit": 2
    }
  }
}

使用这种方法,我在Jupyter Notebook和Jupyter Editor中都将默认缩进设置为2.

答案 4 :(得分:10)

我相信现在最好将其包装在每个笔记本加载一次的事件处理程序中加载:

$([IPython.events]).on('app_initialized.NotebookApp', function(){
  IPython.CodeCell.options_default['cm_config']['indentUnit'] = 2;
});

答案 5 :(得分:2)

除了添加

IPython.Cell.options_default.cm_config.indentUnit = 2;

按照Jakob的建议

到你的custom.js文件,请务必在重启ipython notebook之前清除浏览器缓存!

此外,在添加~/.config/ipython/profile_default/static/custom/文件之前,您可能必须先创建echo $(ipython locate default)目录(使用custom.js查找默认目录)。

答案 6 :(得分:0)

如果您使用 jupyterlab ,似乎有一种更简单的方法:

1)单击jupyterlab菜单设置>高级设置编辑器

2)单击左侧窗格上的“笔记本”,确保您处于“原始视图”

3)在右窗格的“用户替代”下,输入以下内容:

{
    "codeCellConfig": {
        "tabSize": 2
    }
}

如果您查看“系统默认值”,它将提示您可覆盖的内容,您可以对其他设置重复此操作。

我在使用Jupyterlab的Google Platform AI Notebook上进行了尝试。