Опыт редактирования кода Vim / Neovim для Jupyter.
Обзор
Для проектов в области науки о данных обычно я использую Jupyter с привязками к vim. В некоторых предыдущих статьях я также упомянул несколько плагинов, которые интегрируются с Jupyter, но это не совсем то, что я ищу.
В этой статье давайте рассмотрим несколько возможных способов действительно использовать Jupyter с опытом редактирования кода Vim / Neovim.
Таблица содержания
· Обзор
· Содержание
· 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.)