48

IPython ノートブックで関数を開発すると、すばやく作業できることがわかりました。結果に満足したら、コピーしてファイルに貼り付けます。オートインデントはスペース4ですが、うちの会社のインデントのコーディングスタイルはスペース2です。自動インデントを 2 つのスペースに変更するにはどうすればよいですか?

4

7 に答える 7

43

公式ドキュメントには、この特定の質問に答える例があります。これは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

于 2016-01-27T21:13:59.020 に答える
38

CodeMirror Code Cells の公式ドキュメントから:

  1. Ipython ノートブックを開く
  2. を押してコードセルを作成します。b
  3. ブラウザの JavaScript コンソールを開き、次を実行します。

スニペット:

var cell = Jupyter.notebook.get_selected_cell();
var config = cell.config;
var patch = {
      CodeCell:{
        cm_config:{indentUnit:2}
      }
    }
config.update(patch)
  1. を押して、ブラウザーでノートブック ページをリロードします。F5

これにより、永久に修正されます。これは最近のバージョンでのみ機能すると思いますが、よくわかりません!

于 2016-04-24T06:36:36.407 に答える
21

AdamALの答えは正しいです。それは私のために働いた。

ただし、Jupyter Notebook のインデントのみが変更され、Jupyter Editor のインデントは影響を受けません。

インデントを変更するより直接的な方法は、.jupyter/nbconfigディレクトリ内の Jupyter 構成ファイルを直接編集することです。このディレクトリには、次の 2 つのファイルが含まれています。

edit.json
notebook.json

いずれかで設定する必要があるオプションはindentUnit. 私のJupyter構成ファイルの内容は次のとおりです。

edit.json:

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

ノートブック.json:

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

このアプローチでは、Jupyter Notebook と Jupyter Editor の両方でデフォルトのインデントを 2 に設定しました。

于 2016-02-25T09:51:58.400 に答える
13

この質問とここにあるオプションに基づいて:
custom.js ファイル (場所は OS によって異なります) に入れます

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;
            }
        );
    }
);
于 2013-11-25T21:59:53.097 に答える
10

これは、ノートブックの読み込みごとに 1 回読み込むイベント ハンドラーにラップするのが最適だと思います。

$([IPython.events]).on('app_initialized.NotebookApp', function(){
  IPython.CodeCell.options_default['cm_config']['indentUnit'] = 2;
});
于 2014-07-07T16:30:48.237 に答える