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

Как изменить автоинденент на 2 места в ноутбуке IPython

Я нахожу, что разработка функций в ноутбуке IPython позволяет мне быстро работать. Когда я доволен результатами, я копирую-вставляю в файл. Автоопределение - 4 пробела, но стиль кодирования для отступов у моей компании - 2 пробела. Как изменить автоинденент на 2 пробела?

4b9b3361

Ответ 1

На основе этого вопроса и найденных опций здесь:
В вашем файле custom.js(местоположение зависит от вашей ОС) поставьте

IPython.Cell.options_default.cm_config.indentUnit = 2;

На моей машине файл находится в ~/.ipython/profile_default/static/custom

Обновление:

В IPython 3 обычный вызов больше не работает, поэтому требуется установить этот параметр в соответствующий обработчик событий. Возможное решение может выглядеть как

define([
    'base/js/namespace',
    'base/js/events'
    ],
    function(IPython, events) {
        events.on("app_initialized.NotebookApp",
            function () {
                IPython.Cell.options_default.cm_config.indentUnit = 2;
            }
        );
    }
);

Ответ 2

В официальной документации есть пример ответа на этот конкретный вопрос. Это работало для меня с IPython 4.

Резюме. Вставьте следующее в консоль javascript браузера.

var cell = Jupyter.notebook.get_selected_cell();
var config = cell.config;
var patch = {
      CodeCell:{
        cm_config:{indentUnit:2}
      }
    }
config.update(patch)

Настройки сохраняются. Вы можете откат путем обмена : 2 на : null.

Ответ 3

Из официальной документации для кодов CodeMirror:

  • Откройте ноутбук Ipython.
  • Создайте Кодовую ячейку, например. нажав b
  • Откройте браузерную консоль JavaScript и выполните следующие действия

сниппет:

var cell = Jupyter.notebook.get_selected_cell();
var config = cell.config;
var patch = {
      CodeCell:{
        cm_config:{indentUnit:2}
      }
    }
config.update(patch)
  1. Перезагрузите страницу ноутбука в браузере, например. нажав F5

Это будет исправлено навсегда. Я предполагаю, что это работает только в последних версиях, но не уверен, хотя!

Ответ 4

Ответ "Адамал" правильный. Это сработало для меня.

Однако он меняет отступы в Jupyter Notebook и оставляет отступы в редакторе Jupyter незатронутыми.

Более прямым способом изменения отступа является прямое редактирование конфигурационных файлов Jupyter в каталоге .jupyter/nbconfig. Этот каталог содержит 2 файла:

edit.json
notebook.json

Опция, которую вы должны установить в одном, - indentUnit. Вот содержание моих конфигурационных файлов Jupyter:

edit.json:

{
  "Editor": {
    "codemirror_options": {
      "indentUnit": 2,
      "vimMode": false, 
      "keyMap": "default"
    }
  }
}

notebook.json:

{
  "CodeCell": {
    "cm_config": {
      "indentUnit": 2
    }
  }
}

При таком подходе я установил отступ по умолчанию на 2 в Jupyter Notebook и Jupyter Editor.

Ответ 5

Я считаю, что теперь это лучше всего обернуто в обработчике событий для загрузки один раз на загрузку ноутбука:

$([IPython.events]).on('app_initialized.NotebookApp', function(){
  IPython.CodeCell.options_default['cm_config']['indentUnit'] = 2;
});

Ответ 6

В дополнение к добавлению

IPython.Cell.options_default.cm_config.indentUnit = 2;

в ваш custom.js файл, как было предложено Jakob, обязательно очистите кеш браузера и перезагрузите ipython-ноутбук!

Кроме того, перед добавлением файла custom.js вам может потребоваться сначала создать каталог ~/.config/ipython/profile_default/static/custom/ (используйте echo $(ipython locate default), чтобы найти каталог по умолчанию).

Ответ 7

Если вы используете jupyterlab, похоже, есть более простой способ:

1) Нажмите меню настроек jupyterlab> Редактор расширенных настроек

2) Нажмите "Блокнот" в левой панели, убедитесь, что вы находитесь в "Raw View"

3) На правой панели в разделе "Переопределения пользователей" введите следующее:

{
    "codeCellConfig": {
        "tabSize": 2
    }
}

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

Я пробовал это на Google Platform AI Notebook, который использует Jupyterlab.