Jupyter já tem um editor de texto perfeito: construindo um IDE Python

Mar 09 2023
Faça do Jupyter seu IDE tudo-em-um e eleve sua experiência de desenvolvimento em Python
Este artigo é a terceira parte de uma série. Confira a série completa: Parte I, Parte II, Parte IV.
Foto de Fotis Fotopoulos no Unsplash

Este artigo é a terceira parte de uma série. Confira a série completa: Parte I , Parte II , Parte IV .

Nas partes anteriores desta série, abordamos por que muitos desenvolvedores não consideram o Jupyter como um ambiente de desenvolvimento totalmente integrado e como a falta de um poderoso editor de texto é um dos principais motivos.

Assim, decidimos olhar para o JupyterLab como uma plataforma que poderíamos usar para criar nosso próprio Python IDE do zero. Estender a mesma ideia para cobrir outras linguagens de programação é apenas uma pesquisa no Google.

Para isso, usamos o emulador de terminal JupyterLab para instalar o Neovim e fazê-lo funcionar e se parecer com o VS Code. Dessa forma, podemos construir uma imagem docker para empacotar todo o nosso espaço de trabalho, customizado ao nosso gosto. Essa ideia vai além do JupyterLab e do Neovim. Podemos ter um ambiente de trabalho com ferramentas pré-configuradas, como Git para controle de versão, pyenv para criação de ambientes virtuais e tmux para emulação de terminal.

Nas duas primeiras partes da série, instalamos o Neovim, aprendemos nossas ligações do Vim e configuramos a aparência e as configurações básicas do editor. Hoje, vamos instalar vários plugins para fazer nosso editor de texto se comportar mais como um IDE. Para que não esqueçamos, a imagem a seguir é um “Cartão Postal” do nosso destino final:

Imagem do autor

Vamos começar!

Learning Rate é um boletim informativo para quem tem curiosidade sobre o mundo do ML e MLOps. Se você quiser aprender mais sobre tópicos como este, inscreva-se aqui . Você receberá notícias minhas no último domingo de cada mês com atualizações e pensamentos sobre as últimas notícias e artigos do MLOps!

Plug-ins básicos

Várias funcionalidades que saem da caixa com editores populares, como VS Code, estão ausentes quando você instala o Neovim pela primeira vez. Mas não tema; a comunidade criou quase tudo o que você pode imaginar e, geralmente, é fácil configurá-lo.

Em nosso artigo anterior, vimos como podemos configurar um gerenciador de plugins para o Neovim para facilitar nossa vida na hora de instalar plugins. Agora, o processo de instalação de um novo plugin geralmente é:

  1. Adicione o nome do plugin no init.vimarquivo de configuração
  2. Reinicie o editor de texto
  3. Execute o :PlugInstallcomando Neovim
  4. Reinicie o editor de texto para aplicar o novo plug-in

Armado com esse conhecimento, vamos instalar nosso primeiro plugin, nerdcommenter. nerdcommenteré um plugin relativamente simples que faz um trabalho: comenta ou descomenta várias linhas. Para instalá-lo, adicione a seguinte linha no arquivo de configuração do Neovim:

https://github.com/preservim/nerdcommenter

" General setup
set number
set relativenumber
set encoding=utf-8
set mouse=a
set scrolloff=10
set colorcolumn=80
set textwidth=80

" Set syntax highlighting
syntax on

" Remap navigation keys
noremap ; l
noremap l k
noremap k j
noremap j h

" Python specific settings
au BufNewFile,BufRead *.py
    \ set tabstop=4 |
    \ set fileformat=unix |
    \ set softtabstop=4 |
    \ set shiftwidth=4 |
    \ set textwidth=79 |
    \ set expandtab |
    \ set autoindent

" Highlight trailing whitespace
au BufRead, BufNewFile *.py,*.pyw,*.c,*.h match BadWhitespace /\s\+$/ 

call plug#begin()

Plug 'https://github.com/vim-airline/vim-airline' " Show status bar
Plug 'https://github.com/vim-airline/vim-airline-themes.git' " Customize status bar
Plug 'https://github.com/ryanoasis/vim-devicons' " Display developer icons
Plug 'https://github.com/rafi/awesome-vim-colorschemes' " Change color Schemes

call plug#end()

" Set default colorscheme
colorscheme molokai

" Customize status bar
let g:airline_theme='molokai'

if !exists('g:airline_symbols')
    let g:airline_symbols = {}
endif

" airline symbols
let g:airline_symbols.branch = ''
let g:airline_symbols.readonly = ''
let g:airline_symbols.maxlinenr = ''

Em seguida, reinicie o editor e execute o :PlugInstallcomando Neovim. Você deve ver que vim-plug(o gerenciador de plug-ins que usamos) instalou a nerdcommenterferramenta junto com os outros plug-ins:

Imagem do autor

Existem muitas opções que você pode definir para ditar como nerdcommenterdeve se comportar, mas eu gosto de manter as coisas simples para plugins simples como este. Provavelmente, o único atalho que você deve lembrar é o seguinte:

<leader>c<space>

Eu disse vamos manter as coisas simples com este plugin. No entanto, há uma configuração que gosto de definir: adicione espaços após os delimitadores de comentários por padrão. Assim, vamos adicionar a seguinte linha ao final do nosso init.vimarquivo e reiniciar o editor para que tenha efeito:

" Customize NERDCommenter
let g:NERDSpaceDelims = 1 " Add spaces after comment delimiters by default

Tagbar é um visualizador de esboço de código para Vim/Neovim. Um visualizador de estrutura de tópicos é sempre útil ao trabalhar com arquivos que contêm várias linhas de código.

Para instalar o Tagbar, adicione a seguinte linha em seu arquivo de configuração do Neovim e siga o processo normal de instalação de plugins:

Plug 'https://github.com/preservim/tagbar' " Tag source code for navigation

Autor da imagem

Este é o caso de um plugin que precisa de outra ferramenta para funcionar corretamente. Nesse caso, a mensagem de erro diz que precisa de um pacote chamado exuberant-ctags. Então, vamos instalá-lo primeiro:

sudo apt update && sudo apt install exuberant-ctags

Imagem do autor

Ok, admito que este não é o esboço mais sexy, mas espere até começarmos a abrir grandes arquivos Python!

NERDTree

Outro plugin útil que veremos em detalhes é o NERDTree. Este plug-in adiciona um explorador de arquivos e é um dos primeiros plug-ins a serem adicionados ao iniciar uma nova instalação do Neovim. Como de costume, adicione a seguinte linha ao seu arquivo de configuração:

Plug 'https://github.com/preservim/nerdtree' " Show file system explorer

Imagem do autor

Parece que estamos chegando mais perto do nosso objetivo! Agora, há muitas coisas que você pode fazer com NERDTree, mas o que eu mais gosto é como ele pode manipular o sistema de arquivos pressionando m. Dessa forma, você pode facilmente gerenciar arquivos e pastas sem sair do seu editor de texto:

Imagem do autor

Navegando entre painéis

Agora que temos plug-ins que lançam novos painéis, devemos encontrar uma maneira de navegar entre eles. Para isso, gosto de usar a seguinte configuração:

" Use ctrl-[jkl;] to select the active split
nmap fl :wincmd k<cr>
nmap fk :wincmd j<cr>
nmap fj :wincmd h<cr>
nmap f; :wincmd l<cr>

Menções honrosas

Vou deixar você com dois outros plugins que você pode querer experimentar:

  • vim-surround
  • localizador fuzzy fzf

Como sempre, para salvar seu progresso, use o docker commitcomando como fizemos no artigo anterior. Você pode encontrar o meu no DockerHub .

No artigo a seguir, começaremos a abordar o preenchimento automático e a formatação!

Sobre o autor

Meu nome é Dimitris Poulopoulos e sou um engenheiro de aprendizado de máquina que trabalha para a Arrikto . Eu projetei e implementei soluções de IA e software para grandes clientes, como a Comissão Europeia, Eurostat, FMI, Banco Central Europeu, OCDE e IKEA.

Se você estiver interessado em ler mais postagens sobre Machine Learning, Deep Learning, Data Science e DataOps, siga-me no Medium , LinkedIn ou @james2pl no Twitter.

As opiniões expressas são exclusivamente minhas e não expressam os pontos de vista ou opiniões do meu empregador.