Идеальный текстовый редактор для Jupiter: Полноценная среда разработки на Python
Вы спокойно можете создавать полноценную среду разработки Python IDE внутри Jupyter, как мы полагаем. В этой статье мы добавим последние штрихи и упакуем все в образ Docker, чтобы создать портативную рабочую среду для специалистов по обработке данных и инженеров по машинному обучению.
Jupyter — это не совсем IDE. Это даже не пользовательский интерфейс IPython, как многие могут подумать. Мы бы сказали, что Jupyter — это платформа для разработки, и вы можете создать свое собственное рабочее пространство так, как вам нравится. Поскольку он включает в себя эмулятор терминала, вы можете делать все, что захотите. Таким образом, мы будем использовать его для создания полной, многофункциональной Python IDE.
Нам необходимо установить Neovim и настроить его так, чтобы он работал и выглядел аналогично самому популярному в наши дни текстовому редактору: Visual Studio Code. В этой статье мы установим один инструмент, который победит все: завершение кода, форматирование кода, интеграцию с git, проверку орфографии и выравнивание. Давай начнем!
Conquer of Completion
Многие инструменты обещают облегчить жизнь разработчику, когда дело доходит до Vim/Neovim, но мы предпочитают Conquer of Completion.
Conquer of Completion (CoC) - популярный плагин для Vim и Neovim, который предоставляет мощный механизм автозаполнения. Вот несколько ключевых вещей, которые следует знать о CoC:
- CoC поддерживает несколько языков: он может предоставлять предложения по автозаполнению для различных языков программирования, включая Python, JavaScript, C, Go и многие другие. Он использует языковые серверы для предоставления интеллектуальных рекомендаций, основанных на контексте вашего кода.
- CoC легко настраивается: он позволяет пользователям настраивать механизм автозаполнения в соответствии со своими предпочтениями способом, подобным VS Code. Пользователи могут настраивать пользовательские сопоставления для запуска завершения, изменять приоритет источников завершения и многое другое.
- У CoC большое сообщество пользователей: это популярный плагин с большим сообществом пользователей, что означает, что доступно множество ресурсов для устранения неполадок и настройки. Плагин также активно поддерживается и обновляется. Более того, сообщество предоставляет несколько отличных расширений, которые мы будем использовать.
В целом, Conquer of Completion - это мощный плагин, который может значительно улучшить ваш опыт автозаполнения в Vim или Neovim, в основном, если вы работаете с несколькими языками программирования.
Установка
CoC требует некоторой настройки. Вам нужно будет установить и настроить некоторые дополнительные компоненты, включая NodeJS и менеджер пакетов npm. В зависимости от вашего случая вам также может потребоваться установить языковой сервер для вашего предпочтительного языка программирования.
В нашем случае давайте сначала установим NodeJS.
Установка NodeJS
NodeJS и npm
являются жесткими требованиями для установки плагина CoC для Neovim и включения автозаполнения для многих языков программирования.
Чтобы установить два пакета, выполните следующие команды:
- Установите PPA, чтобы получить доступ к его пакетам:
curl -sL https://deb.nodesource.com/setup_18.x -o nodesource_setup.sh
sudo bash nodesource_setup.sh
- Установите Node.js:
sudo apt install nodejs
- Проверьте:
node -v
Если вы получите что-то вроде v18.15.0
(последняя версия на момент написания этой статьи), все готово. Но даже если у вас установлена другая версия, вы сможете продолжить.
Установка CoC
Установка плагина CoC так же проста, как и любого другого плагина. Просто поместите следующую строку в свой конфигурационный файл init.vim
:
Plug 'neoclide/coc.nvim', {'branch': 'release'} " Auto complete Python
Перезапустите редактор и выполните команду :PlugInstall
Vim. vim-plug
, менеджер плагинов, который мы используем, установит CoC для вас. Чтобы завершить процесс установки, снова перезапустите редактор.
Мы готовы установить расширения, необходимые для превращения нашего редактора в полноценную IDE. Запустите команду Vim :CocInstall coc-pyright
, чтобы установить поддержку Python. После завершения установки закройте все окна вашего редактора и откройте файл Python следующим образом:
nvim test.py
Автозаполнение должно быть включено; однако это не очень практично. Итак, давайте настроим CoC. Добавьте следующие строки в ваш конфигурационный файл init.vim
:
" CoC customization
" Applying code actions to the selected code block
vmap <leader>a <Plug>(coc-codeaction-selected)<cr>
xmap <leader>a <Plug>(coc-codeaction-selected)<cr>
" Format action on <leader>
vmap <leader>f <Plug>(coc-format-selected)
xmap <leader>f <Plug>(coc-format-selected)
" GoTo code navigation
nmap <silent> gd <Plug>(coc-definition)
nmap <silent> gv :vsp<CR><Plug>(coc-definition)<C-W>L
nmap <silent> gy <Plug>(coc-type-definition)
nmap <silent> gi <Plug>(coc-implementation)
nmap <silent> gr <Plug>(coc-references)
" Symbol renaming
nmap <leader>rn <Plug>(coc-rename)
" Refactor
nmap <silent> <leader>re <Plug>(coc-codeaction-refactor)
xmap <silent> <leader>r <Plug>(coc-codeaction-refactor-selected)
nmap <silent> <leader>r <Plug>(coc-codeaction-refactor-selected)
" Confirm selection by pressing Tab
inoremap <expr> <Tab> pumvisible() ? coc#_select_confirm() : "<Tab>"
" Open autocomplete menu by pressing Ctrl + Space
inoremap <silent><expr> <c-space> coc#refresh()
" Open documentation by pressing K
nnoremap <silent> K :call ShowDocumentation()<cr>
function! ShowDocumentation()
if CocAction('hasProvider', 'hover')
call CocActionAsync('doHover')
else
call feedkeys('K', 'in')
endif
endfunction
Мы оставили комментарий к каждой строке, чтобы вы могли понять, что она делает. Теперь CoC настроен, и вы можете использовать эти привязки клавиш, чтобы получить от него максимальную отдачу.
Однако на этом дела не заканчиваются. Как мы уже говорили, у CoC есть несколько расширений (например, coc-pyright
), которые вы можете установить. Некоторые из них:
coc-git
coc-docker
coc-yaml
coc-json
coc-prettier
coc-pairs
coc-spell-checker
Чтобы установить любой из них, просто запустите команду :CocInstall
и укажите имя расширения. Для получения полного списка расширений посетите страницу coc-extensions
: https://github.com/topics/coc-extensions
Наконец, вы можете настроить CoC так же, как и в VS Code. Запустите команду :CocConfig
, и появится файл coc-settings.json
. У меня там установлены следующие настройки:
{
"python.venvPath": "/home/dimpo/.pyenv/versions/",
"python.linting.flake8Enabled": true,
"python.formatting.provider": "autopep8",
"pyright.inlayHints.variableTypes": false,
"pyright.inlayHints.functionReturnTypes": false,
"git.addGBlameToVirtualText": true,
}
Каждая строка говорит сама за себя, но если вы хотите узнать, что именно вы можете настроить, обратитесь к документации каждого расширения CoC.
Как обычно, сохраните свою работу с помощью команды docker commit
(обратитесь к предыдущим статьям этой серии, если вы не знаете, что это значит). Вы можете найти мой образ в DockerHub.
Вывод
В этой статье мы создали полную IDE Python в среде JupyterLab. Мы начали с простой установки Neovim, которую настроили так, чтобы она работала и выглядела как самый популярный на сегодняшний день текстовый редактор VS Code.