Атом / возвышенный как множественные выделения в Jupyter

Как выбрать подходящие ключевые слова в блокноте Jupyter с помощью сочетания клавиш? Например, в редакторе Atom/Sublime я могу нажать cmd + D на маке (или Ctrl + d в Windows), когда курсор находится над "var", и каждый раз, когда я это делаю, будет выделен следующий "var". Затем я могу ввести новое имя переменной, и "var" заменяется тем, что я набрал.

var = "hello"
print(var)
print(var)

Есть ли аналог в ноутбуке Jupyter?

7 ответов

Добавлять custom.js в

C:\Users\username\.jupyter\custom      # for Windows and 
~/.jupyter/custom/                     # for Mac 

с содержанием

require(["codemirror/keymap/sublime", "notebook/js/cell", "base/js/namespace"],
    function(sublime_keymap, cell, IPython) {
        cell.Cell.options_default.cm_config.keyMap = 'sublime';
        cell.Cell.options_default.cm_config.extraKeys["Ctrl-Enter"] = function(cm) {}
        var cells = IPython.notebook.get_cells();
        for(var cl=0; cl< cells.length ; cl++){
            cells[cl].code_mirror.setOption('keyMap', 'sublime');
            cells[cl].code_mirror.setOption("extraKeys", {
                "Ctrl-Enter": function(cm) {}
            });
        }
    } 
);

и перезапустите Jupyter. Сейчас Ctrl+D должен работать так же, как в Sublime,

Ты это видишь Ctrl-Enter функциональность отключена, так как было бы очень удобно запускать текущую ячейку, а не создавать новую строку для большинства пользователей. Вы можете выбрать эту функцию, комментируя эту строку.

Вы можете отключить другие настройки ключа, которые вам не нужны, аналогичным образом.

Most recent (and easy) way

The best way right now to achieve Sublime-like keymapping in Jupyter Notebook: Select CodeMirror Keymap from jupyter-contrib-nbextensions. As reported in the homepage:

The jupyter_contrib_nbextensions package contains a collection of community-contributed unofficial extensions that add functionality to the Jupyter notebook.

I personally use several extensions from this package and I find them very useful. As reported in the installation docs, you simply need to run:

      pip install jupyter_contrib_nbextensions

to install the extensions (or better, I would suggest:

      python -m pip install jupyter_contrib_nbextensions

where python points to the python executable of the installation you are using within Jupyter Notebook). You can also use conda if you prefer.

Anyway, you then need to copy some JS and CSS stuff to make the extensions work within Jupyter Notebook, which you can achieve through:

      jupyter contrib nbextension install --user

again, assuming that jupyter points to the jupyter executable you are using to run your notebooks.

At this point, you simply need to enable the extension: navigate the nbextensions_configurator (that comes as a dependency with the package), which you can easily do through the Jupyter Notebook dashboard (to be clear, the page you open to run your notebooks) by browsing the Nbextensions tab and check the box corresponding to Select CodeMirror Keymap.

Done! Launching a notebook it will be sufficient to click on Edit>Keymaps>Sublime to achieve the desired behaviour.

I know this is a rather old question, but I happened to come across it before finding out about jupyter_contrib_nbextensions (and in particular the Select CodeMirror Keymap extension). Thus, I decided to post this answer, hopefully to help other people like me and to let them avoid some further search or messing up with customized JS files (which could scary someone).

В jupyter lab теперь вы можете добавить расширение, выполнив поиск sublime

Нажмите установить и перестроить jupyter.** Примечание: когда вы нажимаете установить, посмотрите на консоль терминала, там будет показан результат сборки.

Вышеупомянутое решение сработало для меня, но я обнаружил, что он имеет нежелательный эффект ввода символа "табуляции", когда я нажимаю Enter. Вот связанная проблема с GitHub: https://github.com/jupyter/notebook/issues/4769#issuecomment-511935127

В этом сообщении я обнаружил, что это решение дает право ctrl + d поведение и сохраняет табуляции как пробелы.

require(["codemirror/keymap/sublime", "notebook/js/cell", "base/js/namespace"],
    function(sublime_keymap, cell, IPython) {
        // setTimeout(function(){ // uncomment line to fake race-condition
        cell.Cell.options_default.cm_config.keyMap = 'sublime';
        var cells = IPython.notebook.get_cells();
        for(var c=0; c< cells.length ; c++){
            cells[c].code_mirror.setOption('keyMap', 'sublime');
        }
        // }, 1000)// uncomment  line to fake race condition 
    } 
);

В Jupyter Lab это теперь можно настроить в Settings > Text Editor Key Map > Sublime Text.

Единственное решение, которое сделало эту работу для меня, это

      pip install jupyterlab_sublime

Да, есть способ сделать это.

В работающей записной книжке Jupyter:

Нажмите

Esc

А затем нажмите

F

F /F оба будут работать.

Вы также можете увидеть другие ярлыки для ноутбука Jupyter в

Справка> Сочетания клавиш

Удачного кодирования.

Другие вопросы по тегам