Ativar tab-completion no Shell do Python

nov. 19, 2011·
Julio Batista Silva
Julio Batista Silva
· 2 minutos de leitura
blog Linux
  1. Crie o arquivo ~/.pyrc com o seguinte conteúdo:

    $ cat .pyrc
    # ~/.pyrc
    # enable syntax completion
    try:
        import readline
    except ImportError:
        print "Module readline not available."
    else:
        import rlcompleter
        readline.parse_and_bind("tab: complete")
    

Se for usar apenas no Linux, esse try não é realmente necessário, coloquei-o em volta do import readline, pois ele usa a biblioteca GNU readline, que pode ter alguns problemas fora do Linux.

  1. Exporte a variável lida toda vez que um shell do Python é aberto (use caminho completo com o /home/usuario):

    julio@julio-acer ~> export PYTHONSTARTUP="/home/julio/.pyrc"
    
  2. Insira essa mesma linha nos arquivos .bashrc e .zshrc, para a variável sempre ser iniciada. No csh a atribuição de variáveis é diferente. Adicione a seguinte linha ao ~/.cshrc:

    setenv PYTHONSTARTUP ~/.pythonrc"
    
  3. Pronto! Pressione a tecla TAB para exibir a lista de possíveis complementos:

    $ python
    Python 3.2.2 (default, Sep  5 2011, 04:52:19)
    [GCC 4.6.1 20110819 (prerelease)] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import re
    >>> re.
    re.A                  re.__eq__(            re._compile(
    re.ASCII              re.__file__           re._compile_repl(
    re.DEBUG              re.__format__(        re._compile_typed(
    re.DOTALL             re.__ge__(            re._expand(
    re.I                  re.__getattribute__(  re._pattern_type(
    re.IGNORECASE         re.__gt__(            re._pickle(
    re.L                  re.__hash__(          re._subx(
    re.LOCALE             re.__init__(          re.compile(
    re.M                  re.__le__(            re.copyreg
    re.MULTILINE          re.__lt__(            re.error(
    re.S                  re.__name__           re.escape(
    re.Scanner(           re.__ne__(            re.findall(
    re.T                  re.__new__(           re.finditer(
    re.TEMPLATE           re.__package__        re.functools
    re.U                  re.__reduce__(        re.match(
    re.UNICODE            re.__reduce_ex__(     re.purge(
    re.VERBOSE            re.__repr__(          re.search(
    re.X                  re.__setattr__(       re.split(
    re.__all__            re.__sizeof__(        re.sre_compile
    re.__cached__         re.__str__(           re.sre_parse
    re.__class__(         re.__subclasshook__(  re.sub(
    re.__delattr__(       re.__version__        re.subn(
    re.__dict__           re._alphanum_bytes    re.sys
    re.__doc__            re._alphanum_str      re.template(
    

Alternativas

Existem Shells de Python aprimorados, como o iPython. Ele é bastante simples, interativo e contém vários recursos interessantes, inclusive autocompletion.

A wiki oficial sugere alguns outros.

Julio Batista Silva
Authors
Senior Cloud Developer

Sou um engenheiro de computação brasileiro baseado na Alemanha, apaixonado por tecnologia, ciência, fotografia e línguas.

Programo há cerca de duas décadas, explorando desde aplicativos móveis e desenvolvimento web até aprendizado de máquina. Atualmente, foco em SRE de nuvem e engenharia de dados.

Sou voluntário nas comunidades de open source e Python, ajudando a organizar a PyCon DE e a PyData Berlin, mentorando e contribuindo com código e traduções.

No meu blog, compartilho dicas de Linux, guias de configuração e notas pessoais que escrevo para referência futura. Espero que outras pessoas também as considerem úteis. O conteúdo está disponível em vários idiomas.

Visite minha galeria para ver algumas das minhas fotografias.

Longe do teclado, você vai me encontrar em shows, tocando clarinete, pedalando, mergulhando ou explorando novos lugares, culturas e culinárias.

Sempre feliz em me conectar! 🙂

comments powered by Disqus