Подтвердить что ты не робот

Отключить автоматические закрывающиеся круглые скобки в ipython

Я остаюсь в курсе событий с веткой ipython dev (потому что ipython - это, пожалуй, самая удивительная вещь). Совсем недавно (до вчерашнего релиза ipython 2.0) я заметил, что он начал автоматически закрывать скобки, скобки, кавычки и т.д. По мере их ввода. Это происходит как в терминале [ничего другого, что я использую в терминале, так и происходит) и в сеансах ноутбука, поэтому я предполагаю, что это был преднамеренный выбор со стороны разработчиков. Я могу уважать, что эта функция может понравиться другим людям, но она сводит меня с ума.

Я не могу найти никакой опции для этого в файлах конфигурации. Я не могу даже гуглить за это, потому что я не знаю, как это называется. Единственное, что подходит, - это особенность автоматических скобок. Я действительно нашел этот вопрос, но этот старый и предполагает, что поведение, которое я вижу, не может быть.

Как отключить эту функцию?

[В любом случае, я в основном просто использую интерфейс ноутбука, так что было бы просто отключить его, но я бы предпочел отключить его как в ноутбуках, так и в сеансах ipython в терминале.]

4b9b3361

Ответ 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