IPython ノートブックで関数を開発すると、すばやく作業できることがわかりました。結果に満足したら、コピーしてファイルに貼り付けます。オートインデントはスペース4ですが、うちの会社のインデントのコーディングスタイルはスペース2です。自動インデントを 2 つのスペースに変更するにはどうすればよいですか?
7 に答える
公式ドキュメントには、この特定の質問に答える例があります。これは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
CodeMirror Code Cells の公式ドキュメントから:
- Ipython ノートブックを開く
- を押してコードセルを作成します。
b
- ブラウザの JavaScript コンソールを開き、次を実行します。
スニペット:
var cell = Jupyter.notebook.get_selected_cell();
var config = cell.config;
var patch = {
CodeCell:{
cm_config:{indentUnit:2}
}
}
config.update(patch)
- を押して、ブラウザーでノートブック ページをリロードします。
F5
これにより、永久に修正されます。これは最近のバージョンでのみ機能すると思いますが、よくわかりません!
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 に設定しました。
この質問とここにあるオプションに基づいて:
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;
}
);
}
);
これは、ノートブックの読み込みごとに 1 回読み込むイベント ハンドラーにラップするのが最適だと思います。
$([IPython.events]).on('app_initialized.NotebookApp', function(){
IPython.CodeCell.options_default['cm_config']['indentUnit'] = 2;
});