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


81

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

構成ファイルにそのオプションが見つかりません。それが何と呼ばれているのかわからないので、私はそれをググることさえできません。表示されるのは、自動括弧のさまざまな機能だけです。私は実際にこの質問を見つけましたが、それは古いものであり、私が見ている行動は起こり得ないことを示唆しています。

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

[とにかく私はほとんどノートブックインターフェイスを使用しているので、オフにするだけで問題ありませんが、ターミナルでのノートブックセッションとipythonセッションの両方でオフにすることをお勧めします。]

回答:


32

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

@Mikeに、IPythonのRequireJS依存関係の読み込みと、IPython / Jupyter InstallationExtensionsでのより良い定式化へのポインタについてのコメントをありがとう。

編集対象Jupyter 4.0.x

現在のIPythonノートブックの実装であるJupyter4.0.0は、JSのカスタマイズを刷新しました。現在は~/.jupyter/custom/custom.jsデフォルトで使用されており、そのrequire(... events.on(...))スニペット全体をグローバルスコープで次のものに置き換える必要があります。

IPython.CodeCell.options_default.cm_config.autoCloseBrackets = false;

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

jQuery('#header-container').hide();

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

custom.js上記の解決策が機能しない場合は、以下を追加してみてください~/.jupyter/nbconfig/notebook.json

{
  "CodeCell": {
    "cm_config": {
      "autoCloseBrackets": false
    }
  }
}

1
$起動プロセスが変更されたため、現在では約2/3の時間しか定義されていないことに注意してください。この回答で指摘したように、そしてcustom.jsipythonが最近作成していることからわかるように、を使用する必要がありますrequire
マイク

3
Ipython / Jupyter 4.0では、これは機能しなくなりました。誰かが同じ問題に遭遇しましたか?
bjonen 2015

#header-containerを非表示にすると、ファイルの名前(大したことではありません。[ファイル]> [名前の変更]を使用して名前を表示/編集するだけです)と、自動保存された日時を示す小さなメッセージ(それほど重要ではないと思います...)も非表示になります。 )。
MD004 2016

1
Jupyter4.0の説明はJupyter5.0でも機能するようです。
nealmcb 2017

私は6.0.3で動作するように4.0のバージョンを取得できませんでしたが、更新された私のために働いここに答えがあります:stackoverflow.com/questions/44216326/...
doublefelixは

24

ノートブックの動作は、CodeMirrorautoCloseBracketsプラグインの結果です。これをオフにするには、編集して(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

ターミナルでも機能しますか?readline)は既存の上書きをサポートしています)か?
asmeurer 2014年

2
コマンド$ ipython profile createは、.pyファイルを作成したことを示します。そのファイルを編集しないでください。代わりに~/.ipython/profile_default/static/custom/custom.js、答えが言うように、ファイルを編集します。迷惑な自動終了括弧を使用してコードを入力するにはどうすればよいですか?
7stud 2015年

5
これはIPython3.1.0 / Jupyterでは機能しないようです(削除して~/.ipython最初から始めてみました)。新しいバージョンでそれを行う方法はありますか?また、さらに厄介な見積もりの​​自動終了動作を破棄するのはどうですか?
naught101 2015

上記のchbrownの答えは、これを行うための新しい方法を提供します。
マイク

1
また、IPython 4.0 / Jupyterでchbrownのメソッドを試しましたが運がありませんでした。まだ私の見積もりは自動的に閉じられます。これに対する更新はありますか?
horatio1701d 2015

12

Pythonからだけ実行したい場合:

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

2
jupyterバージョン間で機能し続ける必要があるソリューションのようです
ansonw 2017

2
これをjupyterノートブックのセルで実行した後、ページを更新して(cmd+Rまたはを押してF5)有効にします。
ルイ・ヤン

11

これは、Jupyter4.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;

5

上記の提案は、Jupyter Notebook5.0.0を使用したJupyter4.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.0ドキュメントの提案から一緒にハッキングされました、そして将来の読者のためにこれらは最新です


8
Jeezは、Jupyterのすべての新しいバージョンでこの質問への回答が壊れているのはなぜですか。これを永久に無効にしたいだけです。
asmeurer 2017

これはJupyter 5.0に私のために働いた唯一のソリューションです
primer_cuervo

これは、jupyter-core(4.3.0)、notebook(5.0.0)では機能しませんでしたが、Sergeyの答えは機能しました。
Heath Raftery 2017

4

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

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

サムのソリューションが何もしなかったとき、これは5.0.0で私のために働きました。まあ。
Heath Raftery 2017

1
これらのどちらも私にはもう機能しませんが、このソリューションは機能します:stackoverflow.com/questions/44216326/…–
ジムギャリソン

4

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

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

スクリーンショット 画像

これは、JupyterLab0.32.1およびjupyter_core4.4.0で機能しました


3

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

私のような人に役立つかもしれないと思います。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.