Configure o Vim para editar código em Python

Tenho experimentado vários editores e algumas IDEs para escrever e editar código em Python, PHP e outras linguagens de programação.
Depois de um tempo, tenho a tendência de sempre voltar à simplicidade do Vim.
Se você nunca o usou, mas tem curiosidade, recomendo ler um pouco mais sobre o editor, antes de voltar para ler este texto.
O Vim não revela fácil sua magnificência para as pessoas.


Claro que ninguém precisa configurar o editor Vim para qualquer linguagem específica e, se você usa mais de uma, provavelmente é melhor não fazer isso.
Alguns dos ajustes que seguem podem ser adequados, contudo, para quem só programa em Python.
Qualquer editor de texto puro é adequado para escrever seu código em Python. Contudo, editores com suporte a syntax highlighting, entre outros recursos avançados, podem facilitar bastante a sua vida.
Os ajustes sugeridos, neste texto, para o editor Vim, vão ajudar a escrever código compatível com o PEP 8, tornando-o mais eficiente e legível.
Fique à vontade para sugerir os seus ajustes preferidos nos comentários.
Veja quais são os que eu uso:

  • Quebra de linhas com mais de 79 colunas.
  • Indentar de quatro em quatro colunas de texto.
  • Tabulação (hard TAB) de 4 colunas.
  • Inserir espaços, quando teclar TAB.
  • Inserir ou remover 4 espaços quando teclar TAB ou Backspace.
  • Ajuste o shiftwidth para controlar quantas colunas serão indentadas nas operações de reindentação.
  • Ativar a indentação automática.

O Vim é um editor de textos que usa atalhos de teclado para receber comandos sobre como processar o seu texto — em vez de ícones clicáveis.
Estas configurações são apenas um ponto de partida, para dar mais eficiência à edição. Recomendo conhecer alguns plugins que podem complementá-los.

O arquivo de configuração do Vim

Como já disse em outros textos, meu sistema operacional é o Debian Linux. Embora a maioria das instruções contidas no site não sejam específicas de qualquer sistema operacional, faz bem deixar claro que os meus exemplos são construídos neste SO. Eventualmente, você vai precisar adaptar algum procedimento ou nome de arquivo à sua realidade aí.
No Debian 9, o arquivo central de configuração do Vim é o ‘/etc/vim/vimrc.local’ ou ‘/etc/vim/vimrc’ — a depender do seu sistema operacional ou da sua distro.
Se você usa o Vim apenas para o Python, pode fazer os ajustes no seu arquivo de configuração local:
‘~/.vimrc’ ou ‘./vim/.vimrc’ no Linux.
Já para quem usa outras linguagens de programação, pode ser mais interessante usar um arquivo de configuração à parte, contendo os ajustes específicos para o Python.
O Vim permite usar arquivos de configuração diferentes ou variados.
No meu exemplo vou criar um arquivo de configuração a ser usado especificamente quando for escrever código em Python, chamado ‘.pyvimrc’. Ele vai ficar gravado em um subdiretório do meu home: ‘~/.vim/’
Para iniciar o editor, com as configurações especiais, basta usar a opção ‘-u’:


vim -u ~/.vim/.pyvimrc

Para facilitar mais, criei um curto script Bash, chamado ‘pyvim’ (python vim), contendo o seguinte comando:


#!/bin/bash
vim -u ~/.vim/.pyvimrc

Eu o gravei no diretório ‘/usr/bin’ e lhe dei permissão de execução:


sudo chmod a+x /usr/bin/pyvim

daqui pra frente, quando executar o script pyvim, o vim será invocado de acordo com as diretrizes inscritas no arquivo ‘~/.vim/.pyvimrc’.
Use os nomes que você quiser, ao criar os criar os arquivos.

Como ajustar o Vim para editar código Python

Vamos ver, neste tópico os ajustes que devem ser colocados no ‘.pyvimrc’ ou no arquivo de configuração da sua preferência.
Segue o conteúdo do meu arquivo ‘~/.vim/.pyvimrc’


textwidth=79	" quebra linhas com mais de 79 col.
shiftwidth=4	" ajusta as operações >> e << indentar e desindentar 4 col.
tabstop=4	" exibe uma TAB crua como 4 col.
expandtab	" insere espaços quando acionar a tecla TAB
softtabstop=4	" insere/remove 4 espaços com TAB/Backspace
shiftround	" arredonda a indentação para múltiplos dos shiftwidth especificados
autoindent	" insere indentação automática a cada nova linha

Experimente e veja como ficou!

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Junte-se a 47 outros assinantes

Introdução à biblioteca de criptografia, com o método Fernet, no Python

O Python tem algumas bibliotecas (libraries ou módulos) que oferecem meios de trabalhar usando a segurança da criptografia.
Em tese, é fácil codificar qualquer coisa dentro de seus scripts Python.
Neste texto, vou apresentar a biblioteca cryptography, com o uso do método Fernet.
No sistema operacional Linux Debian 9 “Stretch” ela já está presente.
Se você não tiver a biblioteca instalada no seu sistema, use o pip3:


pip3 install cryptography

O pacote instala receitas e código fonte para facilitar a criptografia.
A biblioteca foi projetada para ser um ponto de parada única para todas as suas necessidades criptográficas no Python.
Como alternativa, esta tenta oferecer alguns benefícios a mais, em relação a outras implementações e metodologias:

  • Suporte ao PyPy e ao Python3.
  • Manutenção constante.
  • Algorítimos mais sofisticados e atuais.
  • Uso de “criptografia para humanos” de alto nível e APIs.
  • Suporte a AES-GCM

Exemplo de uso de criptografia

Abra a Python shell, invoque o módulo cryptography e faça um teste simples:


>>> from cryptography.fernet import Fernet
>>> chave = Fernet.generate_key()
>>> suite_cifrada = Fernet(chave)
>>> texto_cifrado = suite_cifrada.encrypt(b"uma mensagem secreta. Fora bisbilhoteiros!")
>>> texto_decifrado = suite_cifrada.decrypt(texto_cifrado)
>>> texto_cifrado
b'gAAAAABZPqoEg8urYdh6oH2Av4z9O3XHZttxQcd_9BALfqnp5RzqRPjAIiscmuRi5QnS3JUpMgboXqjDdNCyfAPKgtIoKmc2dQ5XQPjJUZoJiPfYUxMAQqTULWc9TVeugZsCRwGWKrTZ'
>>> texto_decifrado
b'uma mensagem secreta. Fora bisbilhoteiros!'

O Fernet é um método de criptografia simétrica que se certifica de que uma mensagem codificada não possa manipulada ou lida sem a chave.

O método faz uso de codificação segura URL para as suas chaves.

Não se esqueça de se inscrever na nossa newsletter, para ser notificado(a) quando houver um novo post sobre Python:

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.


A implementação é conhecida também como “secret key” e faz uso de codificação em 128-bit, em modo CBC e PKCS7 padding — com HMAC e SHA256 para autenticação.
Leia mais sobre criptografia, clicando na tag criptografia ou fernet.

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Junte-se a 47 outros assinantes

Ative o servidor web Python com uma linha de comando

O Python tem um módulo servidor web/http que pode ser ativado a qualquer momento, com uma única linha de comando.
Com ele é possível disponibilizar arquivos locais, através da porta 8000.
Veja como:


python3 -m http.server

Serving HTTP on 0.0.0.0 port 8000 ...
127.0.0.1 - - [23/May/2017 11:13:56] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [23/May/2017 11:13:57] code 404, message File not found
127.0.0.1 - - [23/May/2017 11:13:57] "GET /favicon.ico HTTP/1.1" 404 -
127.0.0.1 - - [23/May/2017 11:13:57] code 404, message File not found
127.0.0.1 - - [23/May/2017 11:13:57] "GET /favicon.ico HTTP/1.1" 404 -
127.0.0.1 - - [23/May/2017 11:15:11] "GET / HTTP/1.1" 200 -

No Python 2.7, o nome do módulo é SimpleHTTPServer:


python2.7 -m SimpleHTTPServer

Preste atenção na caixa das letras.
Para testar, abra o seu navegador e vá para o endereço http://localhost:8000 ou http://127.0.0.1:8000.

janela do navegador exibindo o servidor web do Pyhton.
Servidor web do Python.

Se você não tiver um arquivo index.html, no seu diretório pessoal, todos os arquivos presentes nele serão listados.
O módulo vai servir sempre os arquivos do diretório atual. Portanto, basta executá-lo no local em que se encontram os arquivos que você deseja compartilhar na rede.
Enquanto o servidor estiver no ar, o terminal, onde ele foi executado, ficará sendo alterado — refletindo o andamento do serviço.
Para finalizar o servidor, tecle ‘Ctrl+c’ no console.
python web http server
O terminal, com o servidor em execução, irá exibir informações básicas sobre o seu funcionamento — como os erros 404, os GET e PUSH, endereços IP etc.
É semelhante a rodar o tail em um arquivo de log do Apache.

Por que usar o servidor HTTP embutido no Python?

Uma das vantagens de usar o recurso é que você não precisa instalar ou configurar qualquer coisa para ter um servidor web — semelhante ao Apache — rodando.
Instalações Linux costumam vir com o Python já instalado. Comumente, elas veem com as versões 2.x e 3.x simultaneamente instaladas e prontas para rodar. Ou seja, é menos trabalho ainda.
É uma forma de disponibilizar arquivos de um dos seus diretórios na rede rapidamente, sem configurar nada. Quando não quiser compartilhar mais… tecle ‘Ctrl+c’.

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Junte-se a 47 outros assinantes