Ich halte mich über den Entwicklungszweig von ipython auf dem Laufenden (weil ipython so ziemlich das tollste überhaupt ist). Vor kurzem (vor der gestrigen großartigen Version von ipython 2.0) habe ich festgestellt, dass Klammern, Klammern, Anführungszeichen usw. beim Tippen automatisch geschlossen werden. Es passiert sowohl im Terminal [nichts anderes, was ich im Terminal verwende] als auch in Notebook-Sitzungen, daher gehe ich davon aus, dass es eine absichtliche Entscheidung der Entwickler war. Ich kann respektieren, dass andere Leute diese Funktion mögen, aber sie macht mich total verrückt .
Ich kann keine Option dafür in den Konfigurationsdateien finden. Ich kann nicht einmal danach googeln, weil ich nicht weiß, wie es heißt. Das einzige, was auftaucht, ist die unterschiedliche Funktion der automatischen Klammern . Ich habe diese Frage tatsächlich gefunden , aber das ist alt und legt nahe, dass das Verhalten, das ich sehe, nicht passieren kann.
Wie kann ich diese Funktion deaktivieren?
[Ich benutze meistens sowieso nur die Notebook-Oberfläche, also wäre es in Ordnung, sie nur auszuschalten, aber ich würde es vorziehen, sie sowohl in Notebooks als auch in Ipython-Sitzungen am Terminal auszuschalten.]
Antworten:
Die Antwort von @ minrk ist das Fleisch und die Knochen des Fixes, aber Sie müssen es zumindest mit in einen Initialisierungsrückruf einwickeln
IPython-3.1.0
. In Ihremcustom.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; }); });
Vielen Dank an @Mike für Ihren Kommentar zum
RequireJS
Laden von IPython- Abhängigkeiten und den Zeiger auf eine bessere Formulierung bei IPython / Jupyter Installing Extensions .Bearbeiten für
Jupyter 4.0.x
:Die aktuelle IPython-Notebook-Implementierung Jupyter 4.0.0 hat die JS-Anpassungen überarbeitet. Es wird jetzt
~/.jupyter/custom/custom.js
standardmäßig verwendet, und Sie müssen das gesamterequire(... events.on(...))
Snippet im globalen Bereich durch Folgendes ersetzen :Wenn Sie mit jQuery etwas manipulieren möchten, verwenden Sie einfach das
jQuery
Global direkt. Zum Beispiel möchte ich den festen Header standardmäßig ausblenden, wodurch ich weitere 40 Pixel Platz für meinen Code habe, was ich etwas wertvoller finde, als ständig auf das Jupyter-Logo zu schauen:jQuery('#header-container').hide();
Bearbeiten für
Jupyter ≥ 4.0.6
(aber <Jupyter Lab):Wenn die
custom.js
obige Lösung nicht funktioniert, fügen Sie Folgendes hinzu~/.jupyter/nbconfig/notebook.json
:{ "CodeCell": { "cm_config": { "autoCloseBrackets": false } } }
quelle
$
heutzutage nur etwa 2/3 der Zeit definiert ist, da sich der Startvorgang geändert hat. Wie ich in dieser Antwort ausgeführt habe und wie Sie aus der heutigencustom.js
Erstellung von ipython ersehen können, müssen Sie verwendenrequire
.Das Notebook-Verhalten ist das Ergebnis des CodeMirror autoCloseBrackets- Plugins. Sie können dies deaktivieren, indem Sie Folgendes bearbeiten (erstellen,
ipython profile create
falls noch nicht geschehen)~/.ipython/profile_default/static/custom/custom.js
und Folgendes hinzufügen:if (IPython.CodeCell) { IPython.CodeCell.options_default.cm_config.autoCloseBrackets = false; }
Was das Terminal betrifft, sehe ich das von Ihnen beschriebene Verhalten in Klammern nicht. Haben Sie vielleicht ein PYTHONSTARTUP definiert? IPython führt diese Datei standardmäßig aus. Sie können sie deaktivieren, indem Sie Folgendes hinzufügen
~/.ipython/profile_default/ipython_config.py
:c.InteractiveShellApp.exec_PYTHONSTARTUP = False
quelle
)
über ein vorhandenes)
?$ ipython profile create
gibt an, dass eine.py
Datei erstellt wurde. Bearbeiten Sie diese Datei nicht. Bearbeiten Sie stattdessen die Datei~/.ipython/profile_default/static/custom/custom.js
wie in der Antwort angegeben. Wie kann jemand Code mit diesen nervigen Klammern zum automatischen Schließen eingeben?~/.ipython
und von vorne zu beginnen). Irgendeine Idee, wie es in neueren Versionen geht? Wie wäre es auch damit, das noch nervigere Verhalten beim automatischen Schließen von Zitaten zu zerstören?Das funktioniert bei mir in Jupyter 4.0.6:
require(['notebook/js/codecell'], function (codecell) { codecell.CodeCell.options_default.cm_config.autoCloseBrackets = false; })
in
~/.jupyter/custom/custom.js
.Übrigens, wenn Sie zusätzlich die Syntax-Hervorhebung übereinstimmender Klammern ausschalten möchten:
quelle
Wenn Sie es nur aus Python machen wollen:
from notebook.services.config import ConfigManager c = ConfigManager() c.update('notebook', {"CodeCell": {"cm_config": {"autoCloseBrackets": False}}})
quelle
cmd+R
oderF5
), um sie wirksam zu machen.Die obigen Vorschläge haben in Jupyter 4.3.0 mit Jupyter Notebook 5.0.0 bei mir nicht funktioniert
Ich stellte fest, dass ich eine Datei
~/.jupyter/custom/custom.js
mit dem folgenden Inhalt erstellen musste :Beachten Sie, dass das Verzeichnis
~/.juypter/custom
vorher nicht vorhanden war.Dies wurde zusammen aus Vorschlägen in v5.0- Dokumenten gehackt , und für zukünftige Leser sind dies die neuesten
quelle
Verwenden Sie für Jupyter Notebook 5.1 dasselbe wie für 4.2, dh fügen Sie das folgende Snippet in ~ / .jupyter / custom / custom.js ein:
require(['notebook/js/codecell'], function (codecell) { codecell.CodeCell.options_default.cm_config.autoCloseBrackets = false; })
quelle
Im Jupyter Lab Notebook können Sie das
autoClosingBrackets
Plugin im Einstellungsmenü deaktivieren. Gehen Sie zuSettings --> Advanced Settings Editor
und fügen Sie imUser Overrides
Abschnitt Folgendes hinzu :{ "codeCellConfig": { "autoClosingBrackets": false } }
Bildschirmfoto
Dies funktionierte mit JupyterLab 0.32.1 und jupyter_core 4.4.0
quelle
Ich fand es wurde in anderen Antworten nicht erwähnt. In meinem Fall (OS X, Jupyter 4.2.0) befindet sich custom.js in ~ / anaconda / lib / python3.5 / site-packages / notebook / static / custom / custom.js
Ich denke, es könnte jemandem wie mir helfen.
quelle