Опыт редактирования кода Vim / Neovim для Jupyter.

Обзор

Для проектов в области науки о данных обычно я использую Jupyter с привязками к vim. В некоторых предыдущих статьях я также упомянул несколько плагинов, которые интегрируются с Jupyter, но это не совсем то, что я ищу.

В этой статье давайте рассмотрим несколько возможных способов действительно использовать Jupyter с опытом редактирования кода Vim / Neovim.



Нишевые плагины Neovim
Обзор alpha2phi.medium.com





Таблица содержания

· Обзор
· Содержание
· Jupyter Ascending
Установить Jupyter Ascending
Создать блокнот и файл Python
Vim Plugin
Запустить Jupyter Notebook
Тестирование
· Firenvim + Jupyter
Plugin
Browser Addon
Тестирование
· Магма
Установка
Тестирование
· Консольные плагины
· Другие плагины

Jupyter Ascending

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

Установить Jupyter Ascending

Выполните эту команду, чтобы установить Jupyter Ascending и расширения.

pip install jupyter_ascending && \
jupyter nbextension install jupyter_ascending --sys-prefix --py && \
jupyter nbextension enable jupyter_ascending --sys-prefix --py && \
jupyter serverextension enable jupyter_ascending --sys-prefix --py

Проверьте статус установки.

jupyter nbextension     list
jupyter serverextension list

Создайте записную книжку и файл Python

Теперь давайте создадим записную книжку и соответствующий файл Python.

python -m jupyter_ascending.scripts.make_pair --base 01_data_prep

В моем случае я создаю записную книжку с именем 01_data_prep.sync.ipynb и файл Python с именем 01_data_prep.sync.py.

Плагин Vim

Установите плагин Vim для Jupyter Ascending. В моем случае я устанавливаю его с помощью packer.nvim.

use { "untitled-ai/jupyter_ascending.vim" }

Запустите Jupyter Notebook

Запустите экземпляр записной книжки Jupyter.

jupyter notebook 01_data_prep.sync.ipynb

Тестирование

Изнутри Vim / Neovim я использую #%% marker для разделения ячеек. По умолчанию определены следующие сопоставления.

nmap <space><space>x <Plug>JupyterExecute
nmap <space><space>X <Plug>JupyterExecuteAll

По сравнению с другими плагинами, которые используют консольный или терминальный подход, теперь у вас все еще есть ноутбук с выводом. Однако в настоящее время этот плагин не поддерживает JupyterLab.

Напротив, если вы предпочитаете подход, основанный на блокноте, попробуйте nbdev.



Firenvim + Jupyter

Я упоминал Firenvim в предыдущей статье. Firenvim превращает браузер в клиент Neovim.

Плагин

Установите плагин с помощью packer.nvim.

use {
      "glacambre/firenvim",
      run = function()
        vim.fn["firenvim#install"](0)
      end,
    }

Дополнение для браузера

В зависимости от вашего браузера, вам необходимо установить надстройку Firefox или Браузер на основе Chromium.

Тестирование

Запустите JupyterLab и начните получать удовольствие!

  • Щелкните любую текстовую область, и она будет немедленно заменена экземпляром Firenvim.
  • Чтобы установить содержимое теперь скрытой текстовой области на содержимое экземпляра Neovim, просто :w. Если вы хотите закрыть оверлей Firenvim и вернуться в текстовую область, используйте :qили :x. Если вы выбрали элемент, на котором, как вы ожидали, должен появиться фрейм Firenvim, но этого не произошло, попробуйте нажать <C-e>.
  • Советы: используйте set lines=80 и set columns=100, чтобы увеличить рамку для редактирования.

Магма

В предыдущих 2 подходах,

  • нам нужен экземпляр записной книжки Jupyter, работающий
  • у нас все еще есть преимущества наличия ноутбука с выходом

Магма-нвим придерживается другого подхода. Он использует Jupyter Client для связи с ядром Jupyter.

Установка

Этот плагин работает в Linux, поскольку требует установки определенных зависимостей, например ueberzug.

  • pynvim (для API удаленного плагина)
  • jupyter_client (для взаимодействия с Jupyter)
  • ueberzug (для показа изображений)
  • Pillow (также для отображения изображений, должен быть установлен с ueberzug)
  • cairosvg (для отображения изображений SVG)
  • pnglatex (для отображения формул TeX)
  • plotly и kaleido (для отображения графических фигур)

Я использую packer.nvim для установки плагина.

use { 'dccsillag/magma-nvim', run = ':UpdateRemotePlugins' }

Тестирование

С установленным плагином теперь я могу интерактивно взаимодействовать с ядром Jupyter из Neovim.

Плагины на основе консоли

Существуют и другие плагины, использующие консольный или терминальный подход, например jupyter-vim, vim-slime или neoterm. За подробностями обращайтесь к этой статье.

Другие плагины

У каждого разработчика есть свой уникальный рабочий процесс и предпочтения. Вот неполный список других плагинов, которые вы можете изучить, чтобы узнать, соответствуют ли они вашим требованиям. Они интегрируются либо с Juptyer, либо с Python REPL.

VSCode пока имеет лучший опыт интегрированной разработки с Jupyter. Благодаря расширяемости Neovim с использованием Lua мы должны ожидать лучшей интеграции между Jupyter и Neovim в будущем.

Если вы еще не являетесь участником Medium и хотите им стать, нажмите здесь. (Часть вашей абонентской платы будет использована для поддержки alpha2phi.)