web-dev-qa-db-ja.com

ipythonで自動閉じ括弧をオフにする

私はipythonのdevブランチで最新の状態を保ちます(ipythonはこれまでで最も素晴らしいものだからです)。かなり最近(昨日のすばらしいipython 2.0リリースの前)、括弧、括弧、引用符などを入力すると自動的に閉じ始めることに気付きました。これは、ターミナル[ターミナルで使用するものは何もありません]とノートブックセッションの両方で発生するため、開発者側の意図的な選択であると考えられます。私は他の人がこの機能を好むかもしれないことを尊重することができますが、私を駆り立てます完全にナッツです。

構成ファイルにオプションが見つかりません。私はそれをグーグルにすることさえできません。現れるのは、 自動括弧 の異なる機能だけです。私は実際に この質問 を見つけましたが、それは古く、私が見ている振る舞いは起こらないことを示唆しています。

この機能をオフにするにはどうすればよいですか?

[とにかくノート型インターフェイスをほとんど使用しているので、そこでオフにするだけで問題ありませんが、ノートパソコンと端末のipythonセッションの両方でオフにすることを望みます。]

75
Mike

@minrkの答えは修正の要点ですが、少なくとも_IPython-3.1.0_を使用して、初期化コールバックでラップする必要があります。 _custom.js_で:

_require(['base/js/namespace', 'base/js/events'], function(IPython, events) {
  events.on('app_initialized.NotebookApp', function() {
    IPython.CodeCell.options_default.cm_config.autoCloseBrackets = false;
  });
});
_

IPythonのRequireJS依存関係の読み込みに関するコメントと、 IPython/Jupyterの拡張機能のインストール でのより良い定式化へのポインタに@Mikeに感謝します。

_Jupyter 4.0.x_:の編集

現在のIPythonノートブックの実装であるJupyter 4.0.0は、JSのカスタマイズを改良しました。現在はデフォルトで_~/.jupyter/custom/custom.js_を使用するため、その全体のrequire(... events.on(...))スニペットをグローバルスコープで次のものだけに置き換える必要があります。

_IPython.CodeCell.options_default.cm_config.autoCloseBrackets = false;
_

同様に、jQueryを使用して何かを操作する場合は、jQueryグローバルを直接使用します。たとえば、デフォルトで固定ヘッダーを非表示にしたいので、コード用にさらに40pxのスペースができます。これは、Jupyterのロゴを常に見るよりも少し価値があります。

_jQuery('#header-container').hide();
_

_Jupyter ≥ 4.0.6_の編集(ただし<Jupyter Lab):

上記の_custom.js_ソリューションが機能しない場合は、_~/.jupyter/nbconfig/notebook.json_に次を追加してみてください。

_{
  "CodeCell": {
    "cm_config": {
      "autoCloseBrackets": false
    }
  }
}
_
30
chbrown

ノートブックの動作は、CodeMirror autoCloseBrackets プラグインの結果です。編集してこれをオフにすることができます(ipython profile createまだ行っていない場合)~/.ipython/profile_default/static/custom/custom.jsおよび追加:

if (IPython.CodeCell) {
  IPython.CodeCell.options_default.cm_config.autoCloseBrackets = false;
}

端末については、あなたが説明する括弧の動作は見当たりません。おそらくPYTHONSTARTUPが定義されていますか? IPythonはこのファイルをデフォルトで実行しますが、~/.ipython/profile_default/ipython_config.py

c.InteractiveShellApp.exec_PYTHONSTARTUP = False
24
minrk

これは、Jupyter 4.0.6で機能するものです。

require(['notebook/js/codecell'], function (codecell) {
  codecell.CodeCell.options_default.cm_config.autoCloseBrackets = false;
})

~/.jupyter/custom/custom.js

ところで、追加の一致する括弧の構文ハイライトをオフにしたい場合:

codecell.CodeCell.options_default.cm_config.matchBrackets = false;
11
kkumer

あなただけのPythonからそれをしたい場合:

from notebook.services.config import ConfigManager
c = ConfigManager()
c.update('notebook', {"CodeCell": {"cm_config": {"autoCloseBrackets": False}}})
11
Sean D

Jupyter Notebook 5.0.0を使用したJupyter 4.3.0では、上記の提案は機能しませんでした

次の内容の~/.jupyter/custom/custom.jsというファイルを作成する必要があることがわかりました。

var cell = Jupyter.notebook.get_selected_cell();
var patch = {
  CodeCell: {
    cm_config: {
      autoCloseBrackets: false,
    }
  }
}
cell.config.update(patch);

これを行う前に、~/.juypter/customディレクトリが存在していなかったことに注意してください。

これは v5. docsの提案から一緒にハッキングされ、将来の読者のためにこれらは latest です

5
Sam Mason

Jupyter Notebook 5.1では、4.2と同じものを使用します。つまり、次のスニペットを〜/ .jupyter/custom/custom.jsに入れます。

require(['notebook/js/codecell'], function (codecell) {
  codecell.CodeCell.options_default.cm_config.autoCloseBrackets = false;
})
4
Sergey

Jupyter Lab Notebookでは、設定メニューでautoClosingBracketsプラグインをオフにできます。 Settings --> Advanced Settings Editorに移動し、User Overridesセクションに次を追加します。

{
  "codeCellConfig": {
    "autoClosingBrackets": false
  }
}

スクリーンショット image

これはJupyterLab 0.32.1およびjupyter_core 4.4.0で機能しました

3
joelostblom

他の回答では言及されていませんでした。私の場合(OS X、Jupyter 4.2.0)、custom.jsは〜/ anaconda/lib/python3.5/site-packages/notebook/static/custom/custom.jsにあります

私のような人に役立つと思う。

3
wuliang8910