Infelizmente estou escrevendo bem menos do que gostaria, especialmente nestes últimos meses que nem se quer passei aqui no blog e praticamente não usei nem o twitter. Estou preparando um post offtopic onde vou comentar melhor sobre tudo o que passei nestes últimos meses e o que estou preparando para os próximos, mas pra “tirar a poeira” daqui vou comentar um pouco sobre meu ambiente de novo.
No final de 2010 escrevi sobre meu ambiente de desenvolvimento e naquele momento finalmente estava me adaptando de vez ao vim e largando completamente o TextMate. O “grande problema” é qua meses depois disso acabei trabalhando num projeto scala na Caelum e o ambiente que o pessoal que iniciou o projeto estava usando era o IntelliJ IDEA. Como eu não sabia nada nem de scala nem do projeto, entrei na onda do pessoal e instalei a IDE. Até aí nada de mais, porem eu ainda trabalhava com java e ruby e o IntelliJ IDEA é uma IDE fantástica com suporte para todas essas e muitas outra linguagens com plugins muito mais maduros e estáveis do que os para eclipse, então resolvi dar uma chance e tentar concentrar tudo nesta IDE. Apenas 1 set de atalhos independente da linguagem e projeto sempre foi um sonho pra mim que vivia fazendo shift de ambiente dependendo do projeto, então por que não tentar? Tentei, e por incrível que pareça passei muito perto de conseguir, mas uma pequeno detalhe me incomodava muito… o preço. Pra quem não sabe eu sou radical contra a pirataria (de software) e embora o IntelliJ seja muito bom, não foi bom o bastate pra me convencer a pagar U$199,00 por ele. Uma alternativa seria usar a versão gratuita que da suporte a java e scala e comprar apenas o RubyMine que é o equivalente ao plugin de ruby do intelliJ mas em versão standalone, o que baixaria o preço da licença para apenas U$ 69,00. Sem dúvidas valeria mais a pena do que comprar o TextMate, mas fui tentar outras alternativas antes de gastar dinheiro com outra ferramenta que, assim como o meu TextMate, um dia poderia se revelar um grande desperdício.
Resolvi então voltar as origens de quando estava aprendendo ruby, dado que estava querendo um ambiente completo e unificado nada melhor do que dar uma chance a minha IDE java que mais usei, o eclipse. Instalei o famoso RadRails e comecei a trabalhar com ele, trabalhei nuns exemplos de java 7, desenvolvi meus projetos ruby do dia-a-dia, dei uma olhada num projeto python que precisei e embora as coisas estivessem mais ou menos boas os constantes erros bizarros e eventuais crashs me incomodam muito. Eu sei que parte disso é porque sempre uso as versões beta do eclipse, mas num dos updates que aconteceram eu simplesmente “crashei” meu workspace e perdi todas as customizações que costumo fazer. Mesmo assim reconfigurei o eclipse inteiro, mas com menos plugins, apenas o Eclim e o já citado Aptana RadRails. Mesmo com um ambiente relativamente enxuto comparado ao monstro que meu eclipse costumava ser, ele continuou se mostrando um ambiente bom o bastante para conseguir trabalhar, mas não pra me deixar completamente satisfeito, sem contar que consumo de memória começou a me incomodar. Estou começando a estudar sobre desenvolvimento de jogos e as ferramentas são bem pesadas e mesmo com meus 8GB de RAM não estava conseguindo “brincar um pouco” sem ter que fechar minhas coisas de trabalho, logo tomei a mesma decisão que tinha tomado em 2010 e desisti do ambiente único integrado e usar a melhor ferramenta para cada atividade. Provavelmente nunca vou programar java num editor de texto então porque querer tanto usar uma IDE pra programar ruby?
Observação importante: O IntelliJ/RubyMine consegue sim te dar boas sugestões no autocomplete e na maior parte das vezes ele acerta perfeitamente a implementação dos métodos no “control click”, inclusive para métodos declarados em gems, métodos sobrescritos e etc, mas tem seu preço. O Aptana ainda está muito longe disso!!
Já que era pra usar um editor de texto de novo e não estava nem se quer considerando o TextMate, poderia testar o Sublime, testar o Emacs ou simplesmente voltar a usar o VIM.
Por pura preguiça e falta de tempo tomei a decisão mais fácil e fui direto ao VIM, mas para não passar raiva de novo ao invés de simplesmente pegar o bundle de alguém desta vez fiz a coisa com um pouco mais de carinho e fui entender e aprender a usar os plugins que eram importantes para mim. Cheguei a conclusão que as funcionalidades que não consigo viver sem são:
- Busca no projeto. Muitas vezes queremos fazer uma busca não apenas no arquivo aberto, mas em todos os arquivos do projeto e me irritava ter que abrir outra aba/split para fazer um grep e depois ter que ficar olhando um por um. Pra este problema temos o Ack
- Árvore de diretórios. Funcionalidade que faz parte de quem está acostumado com ides, mas não são essencial aos editores de texto. No vim basta colocar o NERDTree. Como tenho o hábito de usar tabs ao invés de splits coloquei também o NERDTreeTabs que melhora a usabilidade
- Abrir arquivos pelo nome com busca inteligente. Quando você já sabe o nome do arquivo, ou pelo menos parte dele e quer apenas digitar esse nome e abrir o arquivo. Estou usando o Command-T
- Toggle de comentário. Parece um funcionalidade idiota, mas me irrita muito ter que editar várias linhas para comentar um bloco. NERDCommenter é a melhor ferramenta que existe pra isso. ’5,ci’ vai comentar 5 linhas e pronto, não precisa nem marcar antes nem nada.
- Feedback rápido para erros. Sabe quando você faz aquele método bizarro, salva o arquivo, vai pro browser, atualiza e “pã!”. Vai olhar a stacktrace e foi porque você trocou 2 letras na digitação ou esqueceu o ‘;’ ou qualquer outro erro idiota desses? Syntastic mostra um erro claro assim que você salva o arquivo. Algo parecido com um erro de compilação mesmo para linguagens dinâmicas como Ruby
Além desses ainda tem os não tão importantes mas que ajudam muito durante o dia como o Endwise, Rails, vim-ruby e alguns outros. Acabei pegando o bundle do scrooloose como base que tem praticamente todos esses que decidi que precisava e mais alguns outros desses utilitários e ainda assim é um bundle bem enxuto. Acabei criando meu fork e fazendo algumas poucas configurações extras basicamente por causa do meu hábito de usar abas.