sábado, 20 de março de 2010

Alguns comandos úteis do Vim

Gostaria de compartilhar alguns comandos úteis que utilizo no vim no meu dia a dia. Até tentei ir pro Textmate mas não adiantou, voltei para o vim.

Bom, vamos lá, no modo normal:
  • dd - Exclui a linha atual inteira
  • D - Exclui a partir do caractere atual até o final da linha
  • C - Exclui a partir do caractere atual até o final da linha e entra em modo de inserção
  • ci" - Quando executado dentro de um texto entre aspas, exclui tudo que está dentro das aspas e entra em modo inserção (funciona também com ' { [ etc)
  • ct" - Exclui texto até a próxima aspa e entra em modo inserção (funciona também com ' { [ etc)
  • V - Seleciona linha inteira
  • ddp - Substitui duas linhas
  • xp - Substitui duas letras (não tão útil)
  • dw - Exclui próxima palavra
  • cw - Exclui próxima palavra e entra em modo inserção
  • s - Exclui caractere atual e entra em modo inserção
Em modo visual:
  • c - Exclui texto selecionado e entra em modo inserção
Em modo de comando:
  • :!qualquer_comando_de_terminal - Executa qualquer comando do terminal, por exemplo :!ls ou :!rake db:migrate

Pra quem tem rails.vim (bem similares aos do Textmate):
  • def + tab - Facilita criação de bloco
  • vpo + tab - validates_presence_of
  • vu + tab - validates_uniqueness_of
  • conf + tab - content_for
  • habtm + tab - has_and_belongs_to_many
  • it + tab - teste do rspec
Bom espero que as dicas ajudem, se você souber alguma legal estou interessado em aprender, manda via comentário, e-mail, etc.

Abraços.

Donald - Gem para auxiliar a resolver conflitos do GIT com o Vim

Lá na empresa estamos experimentando trabalhar com integração contínua (e está apresentando ótimos resultados até agora) o que, como o nome sugere, faz com que a gente tenha que fazer mais rebases diários com o git. O que as vezes pode resultar em alguns conflitos.


Com o passar do tempo os conflitos estão diminuindo usando algumas técnicas que estamos aprendendo, e fazendo a integração cada vez mais constante.

Mas de um jeito ou de outro sempre acontece algum conflito no git para resolver e eu não sou muito fã de usar merge tools, prefiro corrigir com um editor de textos qualquer (no meu caso o vim). A única parte chata disso é abrir todos os arquivos conflitados um a um.

Para resolver isso eu fiz uma pequena gem que auxilia na solução de conflitos de uma forma muito simples. Assim que ocorrem os conflitos basta invocar a gem que ela abre todos os arquivos do conflito de uma vez no vim, um em cada aba.

A gem se chama Donald (eu estava sem criatividade pra pensar num nome e dei qualquer um =P) e funciona da seguinte forma:

Instalação:

sudo gem install donald

Quando acontecer o conflito, basta digitar:

donald

E o vim será aberto com todos os arquivos em abas.

Bom é isso, fiz essa gem rapidinho pra tentar me auxiliar la no serviço (eu realmente acredito que vai ajudar). Essa foi minha primeira gem, então se tiverem dicas serão bem vindas.

Se tiver ideias também você pode ajudar fazendo um fork do meu projeto que está em:


E a gem está hospedada em:


Pretendo adicionar algumas funcionalidades nela como abrir o gvim e mvim ao invés do vim, e talvez até outros editores (preciso escrever testes também).

Abraços.

Ps. Atualizei a gem hoje (21/03/2010) e ela já tem as opções de abrir com o gvim ou mvim (--mvim, --gvim ou -m, -g).