DevGang
Авторизоваться

Идеальный текстовый редактор для 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-extensionshttps://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.

#Python
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

В этом месте могла бы быть ваша реклама

Разместить рекламу