Usando o Vim para Programar em Ruby on Rails

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.

Gvim

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.

Nova Aplicação

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:

Database

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

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:

Cars Controller

Rodando as migrações

1
tecla esc + :Rake db:migrate

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

Servidor

Vendo preview no navegador

1
tecla esc + :Rpreview

Preview

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.

Navegador

Navegação de arquivos

Eu conheço duas formas de navegação de arquivos, a primeira é muito rápida:

1
tecla esc + ctrl + f

Busca arquivo

Digite o nome do arquivo desejado, por exemplo new:

Busca Arquivo New

A outra forma de navegação é em diretórios, digite:

1
tecla esc + :Vex

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:

Snippets

Se você olhar nesses diretórios vai poder descobrir as siglas para acessar o snippets, dê uma boa olhada e teste.

Snippets Ruby on Rails

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

Model

Digite i ou insert para colocar o gvim em modo de edição e digite:

1
vp + tecla tab

Model vp

Model vp 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:

Se você gostou desse texto e acha que ajudou você, me recomende: Recommend Me.

  • Share/Bookmark

19 Comments

  1. Alex Souza.

    Cara mto bom isso meu!!!! Esse tutorial era o que faltava pra pessoas como eu iniciar com o VIM. Parabéns.

  2. patrickespake

    Valeu!
    Muito obrigado.
    Fico feliz. ;-)

  3. Ó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!

  4. uchoaaa

    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

  5. patrickespake

    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/

  6. Obrigado, consegui instalar!

  7. 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!

  8. Ótimo post, parabéns!
    Estava usando o gvim, e realmente estas dicas fazem a diferença!

    Sucesso!

  9. patrickespake

    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]

  10. Æ!!

    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

  11. patrickespake

    Eu não sei por que isso pode estar acontecendo. :-(

  12. 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!

  13. Æ!!

    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

  14. 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!

  15. 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!

  16. Putz viajei… agora que vi que você perguntou sobre o Fuzzy_finder.

    Mals ae =P

  17. 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.

  18. patrickespake

    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.

  19. patrickespake

    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.


1 Trackbacks/Pingbacks

  1. Ruby on Rails configurando ambiente de desenvolvimento no Linux | Blog Patrick Espake 25 06 09

Add Your Comment