Отключить автоматические закрывающиеся круглые скобки в ipython
Я остаюсь в курсе событий с веткой ipython dev (потому что ipython - это, пожалуй, самая удивительная вещь). Совсем недавно (до вчерашнего релиза ipython 2.0) я заметил, что он начал автоматически закрывать скобки, скобки, кавычки и т.д. По мере их ввода. Это происходит как в терминале [ничего другого, что я использую в терминале, так и происходит) и в сеансах ноутбука, поэтому я предполагаю, что это был преднамеренный выбор со стороны разработчиков. Я могу уважать, что эта функция может понравиться другим людям, но она сводит меня с ума.
Я не могу найти никакой опции для этого в файлах конфигурации. Я не могу даже гуглить за это, потому что я не знаю, как это называется. Единственное, что подходит, - это особенность автоматических скобок. Я действительно нашел этот вопрос, но этот старый и предполагает, что поведение, которое я вижу, не может быть.
Как отключить эту функцию?
[В любом случае, я в основном просто использую интерфейс ноутбука, так что было бы просто отключить его, но я бы предпочел отключить его как в ноутбуках, так и в сеансах ipython в терминале.]
Ответы
Ответ 1
Ответ @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 Установка расширений.
Изменить для 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
(но & lt; Jupyter Lab):
Если решение custom.js
, описанное выше, не работает, попробуйте добавить следующее в ~/.jupyter/nbconfig/notebook.json
:
{
"CodeCell": {
"cm_config": {
"autoCloseBrackets": false
}
}
}
Ответ 2
Поведение ноутбука является результатом плагинов 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
Ответ 3
Это то, что работает для меня в Jupyter 4.0.6:
require(['notebook/js/codecell'], function (codecell) {
codecell.CodeCell.options_default.cm_config.autoCloseBrackets = false;
})
в ~/.jupyter/custom/custom.js
.
BTW, Если вы также хотите отключить синтаксис, сравнивая скобки с соответствующими скобками:
codecell.CodeCell.options_default.cm_config.matchBrackets = false;
Ответ 4
Если вы хотите сделать это только из python:
from notebook.services.config import ConfigManager
c = ConfigManager()
c.update('notebook', {"CodeCell": {"cm_config": {"autoCloseBrackets": False}}})
Ответ 5
Вышеуказанные предложения не помогли мне в Jupyter 4.3.0 с Jupyter Notebook 5.0.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 документах, и для будущих читателей это самые последние latest
Ответ 6
Для Jupyter Notebook 5.1 используйте то же самое, что и для 4.2, т.е. поместите следующий фрагмент в ~/.jupyter/custom/custom.js:
require(['notebook/js/codecell'], function (codecell) {
codecell.CodeCell.options_default.cm_config.autoCloseBrackets = false;
})
Ответ 7
Я обнаружил, что в других ответах он не упоминался. В моем случае (OS X, Jupyter 4.2.0) custom.js находится в
~/Анаконда/Library/python3.5/сайт-пакеты/ноутбук/статический/пользовательский/custom.js
Я думаю, что это может помочь кому-то вроде меня.
Ответ 8
В блокноте Lab Jupyter вы можете отключить плагин autoClosingBrackets
в меню настроек. Перейдите к Settings --> Advanced Settings Editor
и добавьте следующее в раздел User Overrides
:
{
"codeCellConfig": {
"autoClosingBrackets": false
}
}
Скриншот
![image]()
Это работало с JupyterLab 0.32.1 и jupyter_core 4.4.0