Como todas as pessoas que procuram desenvolver com qualidade e agilidade, eu tive a minha saga até encontrar uma boa ferramenta de edição de código.
Eu só trabalho usando Linux, com certeza ele é o sistema operacional mais produtivo para trabalhar com desenvolvimento em tecnologias livres, para programar em PHP, Ruby on Rails, Java, Python e outras é uma maravilha. A quantidade de softwares e coisas legais é imensa.
Nessa minha saga e evolução no mundo dos editores/IDE já usei Dreamweaver, Gedit, Geany, Eclipse, Aptana, Komodo, Bluefish e por último o NetBeans. Sempre tinha alguns detalhes neles que acabava me irritando, algo que eles não conseguiam fazer. Alguns tinham tantos recursos que acabavam sendo pesados demais. Por último eu estava usando o NetBeans, ele tem umas sacadas legais e algumas coisas divertidas, mas é absurdamente pesado, outro detalhe é que algumas IDE’s tem a mania descontrolada de querer fazer tudo através de interface gráfica, trilhões de janelas para fazer coisas super simples, o terminal é um lance necessário em uma IDE, muitas coisas podem ser feitas em secundos através de um shell. Não a nada de errado em usar o shell, graças a ele que a produtividade aumenta muito, quem acha que interface gráfica aumenta a produtividade está enganado, as vezes ela só enrola mais as coisas.
Através de toda essa saga acima eu acabei chegando no VIM, usando especificamente o Gvim no Gnome para desenvolver em Ruby on Rails. Até o presente momento só são ótimas opiniões formadas sobre ele.
Nesse post vou mostrar como ganhar mais produtividade usando o Gvim.
Todos os passos abaixo foram feitos no Ubuntu 8.04, por que no Ubuntu? Porque ele é simples, tem uma porção de distribuições Linux por ae que complicam demais as coisas, o Ubuntu é sucesso porque é simples de usar. Existe uma grande chance de coisas simples fazerem mais sucesso que as coisas complicadas. :-)
Instalação do Gvim
1 | sudo apt-get install vim vim-gnome vim-addon-manager vim-common vim-full vim-gtk vim-gui-common vim-rails vim-ruby vim-runtime vim-tiny exuberant-ctags ncurses-term |
Instalação do Git
1 | sudo apt-get install git |
Instalação da gem para busca de arquivos
Essa gem está no github, desta forma é necessário adicionar o seu repositório: gem sources -a http://gems.github.com
1 | sudo gem install jamis-fuzzy_file_finder |
Instalação do pacote de configurações para o vim
Agora vamos instalar um pacote de configurações prontas para o vim, esse pacote foi criado pelo Fabio Akita, esse pacote já tem uma série de plugins, temas e snippets.
1 | git clone git://github.com/akitaonrails/vimfiles.git ~/.vim |
Você precisa criar o arquivo ~/.vimrc e adicionar o conteúdo abaixo:
1 2 3 4 5 6 7 | source ~/.vim/vimrc colorscheme vibrantink set nu set sts=2 set sw=2 let g:fuzzy_ignore = "gems/*" |
Essas configurações irão fazer o número de linhas aparecer, ignorar os diretórios de gems e outros ajustes.
Os snippets estão em um repositório separado, desta forma precisamos obter esses arquivos, faça os passos abaixo:
1 2 3 | cd ~/.vim git submodule init git submodule update |
Existe um outro ajuste que pode ser feito, mas esse é opcional, da forma como está agora sempre irá aparecer um $ no final de cada linha, para marcar o fim, particularmente eu não gosto disso. Se você quiser é possível retirar essa marcação, edite o arquivo ~/.vim/vimrc procure pelas linhas:
1 2 | "display tabs and trailing spaces
set list |
E deixe a configuração set list comentada, desta forma:
1 2 | "display tabs and trailing spaces
"set list |
Feito isso nós já temos uma nova gama de funcionalidades adicionadas ao vim, mas é possível melhorar mais ainda, vamos agora instalar a fonte Monaco usada no TextMate. Essa fonte deixa o código com um visual legal.
Instalação da fonte Monaco
1 2 3 4 5 6 7 8 | cd /usr/share/fonts/truetype sudo mkdir myfonts cd myfonts sudo wget http://www.gringod.com/wp-upload/software/Fonts/Monaco_Linux.ttf sudo chown root.root *.ttf sudo mkfontdir cd .. fc-cache |
Agora se você digitar no terminal:
1 | gvim |
Vai ver o gvim com a fonte Monaco e o tema desert.
Com o gvim aberto vamos criar um projeto em Ruby on Rails, e ver as funcionalidades novas que temos no vim. Graças ao plugin rails.vim (http://rails.vim.tpope.net/) foram adicionadas uma série de features.
Criando um projeto Ruby on Rails
Digite no gvim:
1 | tecla esc + :Rails autocomplete |
Onde autocomplete é o nome da minha aplicação Ruby on Rails nesse exemplo.
A opção irá criar a aplicação com suporte ao banco de dados SQLite, se você quiser suporte ao outro banco de dados digite:
1 2 3 4 | tecla esc + :Rails autocomplete -d mysql ou tecla esc + :Rails autocomplete -d postgresql ... |
Esse comando irá criar uma aplicação Ruby on Rails nova.
Pressione a tecla enter como informado na mensagem.
O plugin rails.vim é bem esperto, ele já vai abrir para você o database.yml para você configurar o banco de dados:
Pressione a tecla i ou insert para editar os dados, faça as alterações necessárias e salve digitando:
1 | tecla esc + :w |
Uma breve descrição sobre as operações básicas do vim:
- tecla esc + :w serve para salvar sua alteração (write)
- tecla esc + :q serve para fechar o arquivo (quit)
- tecla esc + :x serve para salvar e fechar o arquivo
Criando o banco de dados
1 | tecla esc + :Rake db:create |
Pressione a tecla enter como informado na mensagem.
Criado um scaffold
1 | tecla esc + :Rgenerate scaffold car name:string description:text color:string |
Será gerado o scaffold para o model car, logo em seguida será exibido o cars_controller.rb:
Rodando as migrações
1 | tecla esc + :Rake db:migrate |
Visualizando a aplicação
Caso você queira visualizar aplicação nesse momento, você pode inicializar o servidor e ver um preview da aplicação rodando no navegador:
Inicializando o servidor
1 | tecla esc + :Rserver |
Vendo preview no navegador
1 | tecla esc + :Rpreview |
Nesse momento o gvim ficará travado e o navegador será aberto para você visualizar o andamento do projeto, quando você fechar o navegador o gvim será destravado.
Navegação de arquivos
Eu conheço duas formas de navegação de arquivos, a primeira é muito rápida:
1 | tecla esc + ctrl + f |
Digite o nome do arquivo desejado, por exemplo new:
A outra forma de navegação é em diretórios, digite:
1 | tecla esc + :Vex |
Snippets
Esse pacote que instalamos para o vim, tem muitos snippets já configurados para acelerar a condificação, eles podem ser encontrados no diretório ~/.vim/snippets:
Se você olhar nesses diretórios vai poder descobrir as siglas para acessar o snippets, dê uma boa olhada e teste.
Vamos testar um pouco os snippets, agora que você já sabe procurar arquivos, abra o arquivo car.rb:
1 2 3 | tecla esc + ctrl + f digite car.rb enter |
Digite i ou insert para colocar o gvim em modo de edição e digite:
1 | vp + tecla tab |
Agora e só apertar tab e ir substituindo os valores.
Caso o snippet não funcione, feche o gvim, acesse o diretório da aplicação Ruby on Rails (autocomplete), estando dentro do diretório autocomplete abra o gvim, agora os snippets tem que funcionar.
A ideia desse post é apenas dar um visão geral, existe várias outras coisas possíveis de fazer, e muitos outros comandos poderosos para trabalhar com Ruby on Rails no vim, por isso eu sugiro que você leia esses outros artigos:
- http://www.akitaonrails.com/2009/01/03/rails-on-vim tem um vídeo bem legal, você pode ver a coisa funcionando na prática;
- http://eustaquiorangel.com/blog/show/339 outros comandos usando o plugin rails.vim;
- http://rails.vim.tpope.net/ site oficial do rails.vim;
- http://code.google.com/p/vimbook/downloads/list livro grátis sobre o vim.
Se você gostou desse texto e acha que ajudou você, me recomende:
.

















Cara mto bom isso meu!!!! Esse tutorial era o que faltava pra pessoas como eu iniciar com o VIM. Parabéns.
Valeu!
Muito obrigado.
Fico feliz. ;-)
Ótimo post cara. Estava procurando por isso ainda esse domingo. Parabéns!
Quando estou efetuando o comando:
sudo gem install jamis-fuzzy_file_finder
Ele diz que não é possível encontrar a gem em nenhum repositório. Eu tenho adicionar algum repositório na minha lista?
Abraços!
Cara, muito bacana! Acabei de ver o post do TaQ e, junto com esse, ajuda bastante..
Ainda não me dou muito bem com o TextMate e ando pensando seriamente em usar o Vim..
[]s
Você precisa adicionar o repositório do github, o jamis-fuzzy_file_finder está lá, eu acabei esquecendo de mencionar isso. hehe…
gem sources -a http://gems.github.com
Mais informações: http://gems.github.com/
Obrigado, consegui instalar!
Patrick,
Por exemplo, eu estou no console do Linux, executo meu gvim a partir do diretório ~/projetos/ que é onde eu guardo meus projetos de Rails.
Aí eu executa ESC + :Rails teste -d mysql
Ele cria uma aplicação rails no diretório ~/projetos/teste/
Se eu executar um ctrl + f e procurar por application.rb ele vai me mostrar todos os application.rb de cada uma das minhas applicações.
Como eu faço pra mudar o diretório onde o vim está, uma vez que ele já foi aberto?
Por exemplo, eu gostaria de mudar para o diretório ~/projetos/testes/ para toda vez que eu dar um ctrl + f ele só me mostrar os arquivos do meu projeto.
Você sabe como eu poderia fazer isso??
Desculpa, sou totalmente leigo em vim =P
E como eu poderia criar um arquivo novo?
Abraços!
Ótimo post, parabéns!
Estava usando o gvim, e realmente estas dicas fazem a diferença!
Sucesso!
A parte de mudar o diretório corrente tenta usar:
[sourcecode language="ruby"]
tecla esc + :Vex
[/sourcecode]
talvez ela faça isso, qualquer coisa dá uma olhada naquela livro grátis de Vim.
Sobre criar um novo arquivo eu estou fazendo assim:
[sourcecode language="ruby"]
tecla esc + :new app/views/layouts/novo.html.erb
[/sourcecode]
Æ!!
Não sei por que mas o ctrl + f nunca funcionou direito no meu VIM…Eu dou ctrl + f e ele traz a lista toda, mas com uma string do arquivo já preenchida, portanto não consigo apenas digitar “car.rb” como no exemplo para abrir o arquivo.
por que senão fica:
nome/do/diretorio/e/do/arquivo.rbcar.rb
e não acha nada…
Alguma sugestão do que pode ser isso?
Há braços
Eu não sei por que isso pode estar acontecendo. :-(
Valeu Patrick!
O ESC + :Vex não deu certo pra trocar de diretório. Mas qualquer coisa eu saio pelo console, mudo de diretório e abro o vim de novo. Vou dar uma procurada depois.
O comando :new funciona perfeitamente… não sabia que ele existia =)
Abraços!
Æ!!
Só para constar…Resolvi meu problema!
Tive que fazer uma busca no meu .vimrc para achar alguma opção que estava bugando e achei o pastetoggle que estava mapeado com Ctrl+p e por algum motivo estava conflitando. =)
Uma coisa que eu gostaria de saber se é possível e ainda não vi como é mudar essa cor bizarra do Fuzzy_finder. No terminal fica uma cor mais clara, mas no gVim fica essa cor ofuscante.
Há braços
PotHix: pra mudar o esquema de cores você pode usar:
ESC + :colorscheme nome_do_arquivo_de_cores
Exemplo:
ESC + :colorscheme default
Aí pra ficar sempre que você usar você pode incluir esse comando no .gvimrc e .vimrc
Abraços!
Ah e pra saber o nome das cores é só ver os arquivos que estão em:
~/.vim/colors
E não precisa digitar a extensão do arquivo no comando :coloscheme, só:
:colorscheme dusk
Por exemplo.
Abraços!
Putz viajei… agora que vi que você perguntou sobre o Fuzzy_finder.
Mals ae =P
Quando vou abrir o gvim, seguindo passo a passo suas dicas uma mensagem de erro aparece :
E484: Impossível abrir arquivo /home/duard/vimfilessnippetssupport_functions.vim
E minha tela é branca. Porém tem menus com themes e tal.
O Akita atualizou o projeto no GitHub, depois disso parou de funcionar corretamente.
Vou refazer e montar um novo projeto, assim que estiver pronto vou atualizar esse post.
Adicionei mais um item necessário para os snippets funcionaram:
[sourcecode language="ruby"]
cd ~/.vim
git submodule init
git submodule update
[/sourcecode]
No texto está descrito melhor o procedimento.