Rails on Vim
Posted on January 03, 2009
Update 04/27/09: eu fiz alterações importantes que você pode ver aqui
Faz tempo que venho quebrando a cabeça sobre qual a melhor maneira de se programar com Ruby e Rails fora do ambiente Mac. Principalmente no Windows. O Netbeans e o Eclipse Aptana são boas opções e estão evoluindo rápido, mas eu sempre vou achá-los muito mais pesados do que necessário.
Sempre digo que basta um bom editor de textos e o terminal/linha de comando. Porém, no Windows não há tantos editores competentes como o Textmate. E mesmo no Mac, há quem não queira pagar pelo Textmate também.
Recentemente alguns Railers começaram a se voltar ao Emacs, incluindo Geoffrey, que fez um screencast sobre isso para o Peepcode. Sinceramente, eu ainda não consigo gostar muito do Emacs. É absolutamente questão de gosto pessoal, mas eu sempre preferi o Vim.
Por outro lado, eu nunca tinha parado para tentar configurar o Vim decentemente. Gastei uns 2 dias remexendo a Web em busca das peças que tornariam o Vim mais parecido com o Textmate. No próprio Github existem várias configurações. Eu peguei um deles que achei interessante e fiz meu próprio fork. Passei o dia todo convertendo snippets do Textmate para o NERDSnippets do Vim, incluindo os bundles de Ruby, Rails, Javascript e jQuery. O resultado é algo muito próximo, porém a engine de snippets do Textmate é mais avançada que o NERDSnippets. A adaptação do plugin FuzzyFinder do Jamis Buck dá um substituto razoável para o navegador de arquivos do Textmate também.
Para instalar no Mac, primeiro recomendo não usar o Vim que vem por padrão porque ele não tem com os bindings de Ruby que precisamos. Baixe o MacVim. Daí no seu ~/.bash_profile coloque o seguinte:
alias vim=“/Applications/MacVim.app/Contents/MacOS/Vim”
1 2 3 4 5 6 7 |
No Windows, baixe o "gVim":http://www.vim.org/download.php#pc. No Mac e no Linux, você deve ter um arquivo .vimrc e um diretório .vim no seu home (ex. /Users/akitaonrails). No Windows você deve ter um arquivo _vimrc e um diretório vimfiles também no home (ex: c:\Documents and Settings\akitaonrails, no Windows XP ou c:\Users\akitaonrails, no Vista e no Windows 7). No Linux e no Mac, no seu diretório home, faça: <macro:code>git clone git://github.com/akitaonrails/vimfiles.git ~/.vim cp ~/.vim/vimrc ~/.vimrc |
No Windows, no seu diretório home, faça:
copy vimfiles\vimrc _vimrc
copy vimfiles\snippets.vim.win32 vimfiles\after\plugin\snippets.vim
Pronto, é só isso. De dentro do Vim, digite “:help rails” para saber as opções que você tem. Comandos como :Rgenerate emulam o script/generate, :Rake emula o rake, :Rscript emula os script/* e assim por diante.
Ctrl+t é o FuzzyFinder, o equivalente ao Command+T do Textmate. O comando \+p abre o Nerd Tree que é parecido com o Project Viewer do Textmate. Navegue pelos diretórios e arquivos apertando a tecla “o”. E a partir dos arquivos do seu projeto Rails experimente usar as mesmas abreviações do Textmate. Para descobrir todas as abreviações, navegue pelo diretório .vim/snippets. Dentro haverá sub-diretórios para cada tipo de arquivo. Por exemplo, .vim/snippets/ruby-rails/hm.snippet significa que se você digitar “hm[tab]” ele ativará o “has_many” (veja no meu screencast).
E para aprender um pouco mais de como usar os modos de edição do Vim, leia o Why, oh WHY, do those #?@! nutheads use vi?. O Vim é bastante poderoso e tem diversas opções que rapidamente devem fazer sentido à medida que você for usando.
No Mac, acho que eu ainda não vou sair do Textmate tão cedo, mas se precisar usar Linux ou Windows, com certeza esta será minha opção padrão.
Alguém tem mais dicas legais de Vim para compartilhar? Não deixem de comentar.
blog comments powered by Disqus
Archives
- February 12(2)
- December 11(1)
- November 11(4)
- October 11(6)
- September 11(5)
- August 11(1)
- July 11(5)
- May 11(4)
- April 11(11)
- March 11(4)
- February 11(3)
- January 11(4)
- December 10(9)
- November 10(2)
- October 10(10)
- September 10(4)
- August 10(6)
- July 10(14)
- June 10(16)
- May 10(8)
- April 10(14)
- March 10(9)
- February 10(6)
- January 10(14)
- December 09(10)
- November 09(10)
- October 09(7)
- September 09(19)
- August 09(4)
- July 09(12)
- June 09(7)
- May 09(12)
- April 09(11)
- March 09(9)
- February 09(9)
- January 09(12)
- December 08(14)
- November 08(20)
- October 08(15)
- September 08(18)
- August 08(25)
- July 08(13)
- June 08(21)
- May 08(29)
- April 08(27)
- March 08(12)
- February 08(32)
- January 08(31)
- December 07(27)
- November 07(30)
- October 07(25)
- September 07(28)
- August 07(16)
- July 07(15)
- June 07(16)
- May 07(7)
- April 07(13)
- March 07(8)
- February 07(9)
- January 07(24)
- December 06(17)
- November 06(17)
- October 06(15)
- September 06(38)





