Quem esta acostumado e vem de linguagens como Java, C#, C++ ou alguma outra que a IDE disponibilize o recurso de autocompletar, acaba sentindo muita falta disso no Python, recurso que vemos em outras IDE’s sem ter que configurar nada como no Eclipse, Visual Studio, NetBeans e demais IDE’s, mas vamos ver como configurar este recurso no editor Vim e no próprio interpretador interativo do Python ;).
No caso para programar Python, assim como Perl e Shell Script uso o Vim, para configurar o autocomplete de sintaxes Python não tive tantas dificuldades visto que o procedimento é praticamente o mesmo para C, SQL e demais linguagens, você pode listar os arquivos de complete das linguagens no caminho abaixo:
cleiton@nb-bueno ~ $ ls -l /usr/share/vim/vim73/autoload/ adacomplete.vim ada.vim ccomplete.vim csscomplete.vim decada.vim ... python3complete.vim python.vim rubycomplete.vim spellfile.vim sqlcomplete.vim syntaxcomplete.vim ...
Para habilitar é muito fácil, primeiro que não vamos nem chegar perto do /etc/vim/vimrc, raros casos editei ele, onde eu prefiro criar um para cada perfil do meu usuário, e você pode fazer isso também.
cleiton@nb-bueno ~ $ touch ~/.vimrc
Vamos editar o .vimrc criado (pode usar o vim para editar :)), e adicione a seguinte linha.
autocmd Filetype python set omnifunc=pythoncomplete#Complete
O segredo é o omnifunc, onde especificamos um dos nomes listados e que você procura em /usr/share/vim/vim73/autoload/, um adendo importante é que no vim73, o numero é de acordo com a versão do vim, no meu caso 7.3.
Agora criando um novo arquivo .py e editando com o vim, basta você começar a digitar e pressionar Ctrl+x e Ctrl+o que irá aparecer as opções para autocompletar, como na Figura 1, o atalho você pode trocar utilizando map, mas deve tomar cuidado se já não esta sendo usado, no caso o padrão é Ctrl+x e Ctrl+o
Figura 1 – Autocomplete Python no editor Vim
Show! Até aqui maravilha, eu cheguei a resolver sem problemas, mas o que eu queria também é autocomplete no interpretador interativo do Python, isso mesmo, aquele que você digita apenas python no terminal e já sai programando e testando, e foi ae que para esta perguntar encontrei a resposta neste list, onde utilizando a variável PYTHONSTARTUP, que é lida antes de carregar o interpretador interativo, você pode passar algum comando, e no nosso caso será um arquivo, então vamos criar o arquivo.
cleiton@nb-bueno ~ $ touch ~/.pythonrc
Edite o arquivo usando Vim :) ou Nano, Gedit, Emacs :( e adicione as duas linhas abaixo:
import rlcompleter, readline readline.parse_and_bind('tab:complete')
Para finalizar, vamos adicionar o arquivo .pythonrc a variavel PYTHONSTARTUP, e toda vez que iniciar um terminal sera inicializada esta variavel ao ambiente, então vamos adicionar a seguinte linha no ~/.bashrc
export PYTHONSTARTUP=~/.pythonrc
Salve e feche o arquivo, saia do terminal e abra novamente ou simplesmente digite:
cleiton@nb-bueno ~ $ source ~/.bashrc
Agora vamos executar o python e no import do sys. pressionar 2x tab, e logo em seguida, iniciando com sys.std e pressionar 2x tab e vamos ver a saída na Figura 2.
Figura 2 – Interpretador interativo Python com autocomplete
Na primeira tentativa da pra ver todas as opções, funções e demais recursos para usar do modulo sys, logo em seguida em import sys.std(2x tab) podemos ver que temos stderr, stdin e stdout como opções.
Pra mim, agora com essas duas features para trabalhar com o Python, ficou muito bom, antes eu trabalhava com 3 ou 4 terminais, um programando, outro para executar o script, outra para pydoc de algum modulo e as vezes testar com python noutro terminal, desta maneira usando vim, autocompleta o que esquecer ou estiver em duvida, encontro o modulo que preciso, consigo uma previa do doc conforme vou listando as opções dos módulos, usando o vim posso chamar um shell e executar o código e em outro terminal deixar apenas para o python interativo para visualizar todas opções de um modulo ou usar pydoc ;)
Em um artigo futuro escreverei sobre o vim e os diversos atalhos e parâmetros de configuração que o tornam um excelente editor para varias linguagens, uso algumas configurações pré-definidas para programar C em Linux, vou escrever sobre isso ;)
Espero que tenham gostado e até a próxima!
Referências
http://conjurecode.com/enable-auto-complete-in-python-interpreter/
https://docs.python.org/2/using/cmdline.html#envvar-PYTHONSTARTUP
Python – Autocomplete no Python e Vim by Cleiton Bueno is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.