Bom, o fato é que já dentro da IBM entrei em um projeto majoritariamente em Python. Uns pedaços em shell script, mas a grande maioria em Python. O que me forçou a ser um pouco mais produtivo do que o normal. Com Vim e ferramentas adequadas isso é bastante fácil. :-)
Indo direto ao assunto, ao final deste breve tutorial, iremos ter algo parecido com o screenshot acima: Teremos uma lista de classes e métodos do projeto todo em uma janelinha (split) do Vim. A tela lateral é gerada com o plugin TagList e a lista de classes e métodos (as informações em si) é com o ctags. Tudo muito simples.
Primeiro vamos entender o programa ctags: Ele lê arquivos fonte (e até agora eu já testei com C e Python) e gera um arquivo de tags que contém informações relevantes tais como: Declaração de variáveis, declaração de funções (em caso de linguagem estruturada), classes e seus métodos (em caso de linguagem orientada a objeto) e por ai vai. As tags são orientadas ao caminho do arquivo de onde foram lidas as informações, isso quer dizer que gerar um arquivo de tagas com o caminho absoluto do arquivo é mais interessante do que gerar o mesmo arquivo com o caminho relativo já que vamos manipular informações dentro de um projeto inteiro. Trocando em miudos:
$ find $(pwd) -regex ".*py$" | xargs ctags
Execute este comando na raiz do projeto, ele irá ler todos os arquivos .py e irá mapeá-los com ctags gerando o arquivo tags. Note que o diretório de procura será $(pwd), isto fará com que as tags tenham o caminho absoluto do arquivo mapeado.
Agora, você terá que copiar o arquivo de tags para cada um dos diretórios do projeto:
$ find $(pwd) -type d -exec cp -v tags {} \;
(Quem tiver dúvidas no shell só deixar nas caixas de comentários que eu explico)
Depois de criar e copiar o arquivo de tags para cada diretório de seu projeto, agora é hora de usar TagList dentro do vim. Baixe o arquivo, descompacte e copie o arquivo taglist.vim para dentro de ~/.vim/plugin e taglist.txt para ~/.vim/doc:
$ cp taglist.vim ~/.vim/plugin
$ cp taglist.txt ~/.vim/doc
Agora é só correr pro abraço. O comando mais importante que você deve aprender agora é TlistOpen. Deve saber também que dentro do split você pode apertar F1 e receber ajuda sobre os comandos e keybinds que pode usar para navegar nas classes e métodos.
:TlistOpen
E agora, o mais legal de tudo: Com a split aberta (e com as classes e métodos do arquivo atual lá), você pode usar as keybinds do ctags para pular diretamente para métodos em outras classes e em outros arquivos. Por exemplo, com o cursor em cima de um método qualquer você pode apertar Ctrl+] e pular automaticamente para o arquivo onde está implementado o método. A split irá mostrar a classe em questão e seus métodos como mostra a figura abaixo:
Espero ter ajudado os programadores por ai! :-)
9 comentários:
A combinação do VIM com alguns plugins realmente ajudam e muito quando estamos programando. Teve um tempo em que eu usava ele pra programar em RoR e fui agregando alguns plugins nele. Ficou muito bom, com tudo acessível e bem direcionado a linguagem que eu estava trabalhando.
Uma coisa que não pude deixar de notar.... vc tá usando orientação a objetos??? =P
Então,
Os screenshots são do projeto Bittorrent. Devido à confidencialidade da IBM eu não botar screenshots do meu projeto e tals... Mas *sim*, to programando orientado a objeto. Por incrível que pareça :-P
[]'s
Programar orientado a objeto em python eh quase uma consequencia natural :) E programar orientado a objeto é tãaaaao legaaaaaaaal :p
Conhece o plugin SnippetsEmu?
http://www.vim.org/scripts/script.php?script_id=1318
Um vídeo sobre o plugin:
http://ttyshare.com/rec/mopemope/3716682/
voyeg3r,
Bem massa esse plugin, vou dar uma olhada nele e, quem sabe, ele também não ganha um review dele (misturado com outro plugin) aqui no otubo.net :-)
Valeu a dica!
[]'s
Iniciei um projeto para a criação de um livro sobre o vim em português: No meu
blog http://vivaotux.blogspot.com/2009/01/nosso-livro-sobre-o-vim.html
há uma postagem sobre e um previw em um frame do site scribd.
Há um grupo de discussão
http://groups.google.com/group/vimbook
e a página oficial do projeto
http://code.google.com/p/vimbook/
A idéia é que as pessoas que dominam melhor o vim e o Latex adicionem suas
melhores idéias a este projeto!
Estava lendo um comentário seu Otubo, sobre seu desejo de versionar arquivos de configuração de ambiente, veja estes links:
http://bitbucket.org/sergio/vimfiles
http://vimcasts.org/episodes/synchronizing-plugins-with-git-submodules-and-pathogen/
http://pyverted.com/version-control/using-mercurial-on-your-home-directory/2009/08/
Caramba, que meméria voyeg3r! Vou averiguar as dicas. Muito obrigado :-)
Postar um comentário