Как постоянно добавлять сочетания клавиш в блокнот Jupyter (ipython)?

У меня есть следующая конфигурация ярлыков, которая работает после запуска в ячейке блокнота Jupiter:

%%javascript


IPython.keyboard_manager.command_shortcuts.add_shortcut('ctrl-q', {
    help: 'Clear all output',               // This text will show up on the help page (CTRL-M h or ESC h)
    handler: function (event) {             // Function that gets invoked
        if (IPython.notebook.mode == 'command') {
            IPython.notebook.clear_all_output();
            return false;
        }
        return true;                   
    }
  });

Как настроить блокнот Jupiter для автоматической инициализации при запуске?

Я попытался добавить тот же код (без %%javascript) в C:\Users\<username>\.ipython\profile_default\static\custom\custom.js, но это не сработало.

У меня есть только один профиль, созданный с помощью ipython profile create, Python 3.3, Windows 7.

Заранее спасибо.


person Apogentus    schedule 17.08.2015    source источник
comment
обратите внимание, что для jupyter custom.js находится в ~/.jupyter/custom/custom.js   -  person Sida Zhou    schedule 30.04.2016


Ответы (4)


custom.js — правильное место для этого кода. Попробуйте обернуть его следующим образом (не забудьте return true перед концом блока):

$([IPython.events]).on("app_initialized.NotebookApp", function () {
    <your code>

    return true;
});
person Dmitri    schedule 22.08.2015
comment
Вы действительно верите, что ‹вашего кода› достаточно для того, чтобы кто-то создал сочетание клавиш с помощью вашего метода?! - person Apostolos; 14.05.2019

В новой версии блокнота Jupyter (обновите его либо с помощью pip install --upgrade notebook, либо, если вы используете conda conda upgrade notebook), вы можете настроить их из самого блокнота.

Для этого Справка -> Редактировать сочетания клавиш

введите описание изображения здесь

person Salvador Dali    schedule 16.04.2017
comment
Обратите внимание, что это не решает сочетания клавиш для режима редактирования, а только для командного режима. Таким образом, хотя enter command mode якобы доступен, на самом деле он не устанавливается этим интерфейсом. - person mpacer; 17.05.2017
comment
это тоже не стойко - person Celdor; 20.06.2017
comment
@Celtor у меня был стойкий на Jupyter 4.4.0, был сохранен под ~/.jupyter/nbconfig/notebook.json. - person Ciro Santilli 新疆再教育营六四事件ۍ 20.11.2017
comment
Не работает для меня. Я пытаюсь назначить ярлык для restart kernel and run all cells, но как только я сохраняю из диалогового окна, а затем снова открываю диалоговое окно, ярлык исчезает. это вообще не работает - person Jay Chakra; 12.07.2018
comment
Я использовал «Редактировать сочетания клавиш» и несколько раз выполнял некоторые настройки, но не могу найти их ни в одном из файлов настройки Jupiter («custom.js» или «notebook.json»). Где они хранятся??? - person Apostolos; 14.05.2019
comment
@JayChakra Я, наверное, опаздываю, но у меня была та же проблема, и вот что нужно отметить: 1- ваш выбор комбинаций клавиш должен быть v действительным в соответствии с пояснениями точно внизу того, где вы назначаете клавиши 2- это не должно быть уже использовано для другой команды (не должно становиться красным, когда вы ее вводите) 3- вы должны нажать Enter и увидеть, что она добавляется в левую часть. - person aderchox; 30.05.2019

<сильный>1. Для изменения ярлыков командного режима: см. ответ Сальвадора

<сильный>2. Для изменения ярлыков режима редактирования:

Отредактируйте файл ~/.jupyter/nbconfig/notebook.json, как описано на странице https://jupyter-notebook.readthedocs.io/en/stable/extending/keymaps.html.

Например, после замены сочетания клавиш «control-enter» для выполнения кода на «command-enter» в macOS файл выглядит так:

{
  "Notebook": {
    "Toolbar": true,
    "Header": true
  },
  "Cell": {
    "cm_config": {
      "lineNumbers": true
    }
  },
  "keys": {
    "command": {
      "unbind": [
        "ctrl-enter"
      ],
      "bind": {
        "cmdtrl-enter": "jupyter-notebook:run-cell"   
      }
    }, 
    "edit": {
      "unbind": [
        "ctrl-enter"
      ],
      "bind": {
        "cmdtrl-enter": "jupyter-notebook:run-cell"
      }  
    } 
  }   
} 
person Sachit Nagpal    schedule 28.03.2019
comment
1. Разве это не работает как в командном режиме, так и в режиме редактирования? 2. Разве ответ Сальвадора Дали выше не просто редактирует этот файл через графический интерфейс? - person flow2k; 30.10.2020
comment
Ответ Сальвадора изменил только ярлыки командного режима, а не режим редактирования - person Sachit Nagpal; 31.10.2020
comment
@ Сачит Нагпал, спасибо за ответ. Есть ли документы, подтверждающие то, что вы говорите? Я вижу "edit": в вашем фрагменте кода выше, и я пробовал с версией 6.1.4, и, похоже, она также настраивает раскладку режима edit. - person flow2k; 01.11.2020
comment
Я хочу сказать, что редактирование ~/.jupyter/nbconfig/notebook.json должно работать как в командном режиме, так и в режиме редактирования. - person flow2k; 01.11.2020
comment
Вы можете соответствующим образом отредактировать файл. Не привязывайте и не отвязывайте ничего под клавишей редактирования и добавляйте привязки только под командной клавишей, если вы хотите редактировать только ярлык командного режима. - person Sachit Nagpal; 07.11.2020

Простое добавление горячих клавиш с помощью nbextensions

  1. Установите nbextensions.
    pip install jupyter_contrib_nbextensions
  2. Затем запустите Jupyter Notebook.
  3. На вводной странице будет новая вкладка под названием nbextensions, щелкните по ней и включите редактор сочетаний клавиш.
  4. Теперь откройте любую записную книжку, нажмите «Справка»> «Сочетания клавиш».
  5. Рядом с каждым ярлыком будет значок карандаша, если вы нажмете на него, вы можете установить ярлык на все, что хотите.
person James Draper    schedule 24.01.2017