Я считаю, что разработка функций в блокноте IPython позволяет мне работать быстро. Когда я доволен результатами, я копирую и вставляю в файл. Автоотступ составляет 4 пробела, но стиль кодирования для отступа в моей компании составляет 2 пробела. Как изменить автоотступ на 2 пробела?
Как изменить автоотступ на 2 пробела в блокноте IPython
Ответы (7)
На основе этого вопроса и найденных параметров здесь:
В вашем файле 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;
}
);
}
);
В официальной документации есть пример ответа на этот конкретный вопрос. Это сработало для меня с 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
.
Из официальной документации для ячеек кода 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
Это навсегда исправит проблему. Я предполагаю, что это работает только в последних версиях, но не уверен!
10.11.6
с блокнотом Jupyter 5.0.0
- person Micah Stubbs; 19.09.2017
Ответ AdamAL правильный. Это сработало для меня.
Однако он изменяет только отступ в блокноте Jupyter и не затрагивает отступ в редакторе 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, так и в редакторе Jupyter.
jupyter --config_dir
* Если каталог и nbconfig/
и файлы edit.json
и notebook.json
не существуют, вы можете создать их с содержимым, описанным bpirvu.
- person Jan; 02.08.2017
Я считаю, что теперь это лучше всего завернуть в обработчик событий для загрузки один раз при загрузке ноутбука:
$([IPython.events]).on('app_initialized.NotebookApp', function(){
IPython.CodeCell.options_default['cm_config']['indentUnit'] = 2;
});
~/.jupyter/custom/custom.js
(после создания каталога custom/
)
- person Matt; 09.03.2016
Если вы используете jupyterlab, есть более простой способ:
1) Щелкните меню jupyterlab «Настройки» > «Редактор расширенных настроек».
2) Нажмите «Блокнот» на левой панели, убедитесь, что вы находитесь в режиме «Необработанный вид».
3) На правой панели в разделе «Пользовательские переопределения» введите следующее:
{
"codeCellConfig": {
"tabSize": 2
}
}
Если вы посмотрите на системные настройки по умолчанию, это даст вам подсказку о том, что можно переопределить, и вы можете повторить это для других настроек.
Я попробовал это на ноутбуке Google Platform AI, который использует Jupyterlab.
Помимо добавления
IPython.Cell.options_default.cm_config.indentUnit = 2;
к вашему файлу custom.js
, как предложил Якоб, обязательно очистите кеш браузера перед перезапуском ноутбука ipython!
Кроме того, вам, возможно, придется сначала создать каталог ~/.config/ipython/profile_default/static/custom/
(используйте echo $(ipython locate default)
, чтобы найти каталог по умолчанию), прежде чем добавлять файл custom.js
.