Я нахожу, что разработка функций в ноутбуке IPython позволяет мне быстро работать. Когда я доволен результатами, я копирую-вставляю в файл. Автоопределение - 4 пробела, но стиль кодирования для отступов у моей компании - 2 пробела. Как изменить автоинденент на 2 пробела?
Как изменить автоинденент на 2 места в ноутбуке IPython
Ответ 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)
- Перезагрузите страницу ноутбука в браузере, например. нажав
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.