Venho lendo que não dá para depender de IDEs há algum tempo. São as mesmas pessoas que afirmam que é possível ser mais produtivo com um editor de textos poderoso.
Então, aproveitando minha atual entrada no mundo Ruby e o fato do Akita, que é quem eu leio sobre Ruby e usa VIM, resolvi me inspirar na idéia de versionar meu diretório ~/.vim usando o Git.
Para modificar as configurações entre no Vim e digite:
:edit $MYVIMRC
Para ver as modificações, sem reiniciar o Vim:
:source $MYVIMRC
- Vim – sobre o editor Vim.
- Vim as a languange
- Akita vimfiles, no Github – O repositório do Akita com a configuração do vim dele.
- Atalhos Úteis.
- Melhor guia de consulta rápida
- Melhor guia de consulta rápida, separado por ações
- Tutorial online
- Videos do Derek Wyatt
- Dividindo as janelas
- Vim para Rubistas
- Effective rails development Vim
- Faster Vim, on Mac
- A good vimrc
- [Leader]: \
Além de baixar o projeto para o diretório .vim, é necessário baixar os submodulos. E, ainda, tem um passo adicional para o plugin command-t
cd ~
git clone https://github.com/acdesouza/vimfiles.git .vim
git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim
echo "source ~/.vim/vimrc" > ~/.vimrc
echo "source ~/.vim/gvimrc" > ~/.gvimrc
vim +PluginInstall +qall
Precisa do XCode, que vem com o CD de instalação do Mac.
A versão mais nova é o XCode4, que dá para comprar e baixar pela App Store, mas ainda não testei usar esta versão.
Já o MacVim, entre outros aplicativos, eu instalo pelo Homebrew
Não é necessário instalar nada
As customizações feitas no meu .vimrc foram encontradas em http://jmcpherson.org/vimrc.html. Não estou usando todas, apenas as que me permitem definir o seguinte comportamento:
- Sem compatibilidade com o VI;
- Sem barra de ferramentas;
- Exibir/Ocultar o número da linha na lateral esquerda do texto, com o keymap: [Leader] + ln, de (l)ine (n)umber;
- Exibir/Ocultar a distância da linha atual, em linhas, na lateral esquerda do texto, com o keymap: [Leader] + lr, de (l)ine®elative;
- Exibir a linha e coluna atual, na barra de status;
- Usar codificação UTF-8;
- Adicionar o shebang UTF-8 na primeira linha do arquivo com o keymap: Command + 1
- (Des)Comentar a linha atual, ou as linhas selecionadas, com o keymap: + c
- Identação automática, isto é, a identação da próxima linha é a mesma da linha atual;
- Indentação inteligente, isto é, incrementa a indentação da linha seguinte a da criação de um bloco de código;
- Tabulação, padrão, de 2 caracteres;
- Substituir os caracteres de tabulação pelo de espaço;
- Apagar os espaços sobrando no final das linhas;
- Exibir chaves correspondentes, isto é, quando fechar uma chave, mostrar qual a chave que está sendo fechada;
- Buscar enquanto digita, isto é, ao ir para o modo de comando e digitar /, tudo que for digitado depois será destacado na próxima parte do texto onde aparecer, como na busca do Firefox;
- Buscar usando o lgrep, filtrando diretórios: .git, .sass-cache, coverage, tmp, log, doc, node_modules. :GrepProject batata .
- Fonte Menlo de tamanho 13;
- Diretório de backup dentro do diretório .vim/, assim evito de espalhar os arquivos swp pelo sistema;
- Impedir quebra de linha;
- Configurar a linha de status para exibir: nome do arquivo [tipo de arquivo] coluna atual,linha atual/total de linhas percentual no arquivo%
- Configurar a linha de tabs para exibir: número da tab:nome do arquivo aberto
- Vundle – Como instalar os plugins no VIM encapsulados em uma pasta.
- NERD_Commenter
- Estou usando “Command/” para alternar entre comentar/descomentar a linha atual.
- NERD_Tree – Este plugin cria uma visualização de diretórios estilo árvore, com funcionalidade de bookmark, ou seja, é possível criar um bookmark para um diretório para facilitar a abertura de projetos, por exemplo.
- : Mostra o buffer atual no NERDTree.
[Leader]]
- Não tem um keymap para esse cara, então andei olhando na internet sobre sugestões:
- [Leader]][ – Escolhi este, porque no MacBook o F2 precisa ser precionado com a tecla Fn.
- F2
- [Leader]d
- endwise – Plugin para adição de fechamento de blocos em Ruby, como if, def e do com o end. Mais sobre indentação de código no VIM.
- ctrlp – Plugin que emula a abertura de arquivos do TextMate usando, só que usando o atalho Ctrl + p. Este plugin busca pelos arquivos no diretório corrente no Vim. Para mudar de diretório, use o cd no modo de comando.
- Para refazer o indice, no caso de criar arquivos, use:
[Leader]pr
- Para refazer o indice, no caso de criar arquivos, use:
- vim-ruby – Plugin para syntax highlight, indentação inteligente para Ruby
- vim-rails – Plugin para syntaxe highlight dos helpers do Rails, execução dos testes com o comando :Rake e navegação entre os artefatos relacionados.
- Para executar o teste aberto no bufffer corrente use:
:Rake
- Navegação entre artefatos relacionados. A partir de qualquer artefato(model, controller, unittest, functionaltest) é possível navegar para os outros:
- :Rmodel – para o modelo
- :Rcontroller – para o controller
- :Runittest – para o teste unitário, normalmente do modelo
- :Rfunctionaltest – para o teste funcional, normalmente do controller e da view
- Para executar o teste aberto no bufffer corrente use:
- jasmine.vim – Plugin para syntax highlight para o framework, javascript, Jasmine.
- vim-less – Plugin de syntaxe highlight para o Less.
- vim-ragtag – Fechar tags. Funciona apenas em arquivos do tipo: html, xhtml, wml, xml, xslt, xsd, jsp, php, aspperl, aspvbs, cf, mason, htmldjango, and eruby
- Ctrl+x=: Deve adicionar a tag de script do tipo de arquivo do buffer. Como <%= %>, no caso de arquivos eruby
- Após escrever p, Ctrl+x[space]: Deve criar a tag <p>^</p> e posicionar o cursor no lugar do “^”.
- ale – Linter para várias linguagens. Estou usando para rodar o rubocop
- vim-rvm – Usar a configuração do diretório atual para definir a versão do Ruby e gems disponíveis para o vim.
- Uso para instalar o rubocop apenas no gemset do projeto que precisa dele. Daí configura o ale para usar a versão do rubocop desse projeto.
- Para a integraçao funcionar, abre o vim pelo terminal. Na raiz do projeto usando o RVM. No Linux o gvim funciona bem.
Atualmente, só uso o luna(Pychimp/vim-luna).
Já usei, mas acabei removendo por não usar mais:
- railscast – Inspirado no tema usado no Textmate do Railscast;
- railscasts2;
- vividchalk – Inspirado no tema Vibrant Ink, do TextMate.
Para mudar o tema, use o comando:
:colorscheme nome_do_tema
Observe que o Vim consegue completar o nome do tema, usando [TAB]
Recuperar os arquivos abertos quando o Vim fechar.
http://stackoverflow.com/questions/2902048/vim-save-a-list-of-open-files-and-later-open-all-files
http://jaredforsyth.com/blog/2010/apr/9/vim-crash-recovery/
http://www.vim.org/scripts/script.php?script_id=2010
http://www.vim.org/scripts/script.php?script_id=3883
http://stackoverflow.com/questions/1416572/vi-vim-restore-opened-files
- tabnew arquivo – abre o arquivo em uma nova aba
- gt – Move para próxima aba
- gT – Move para aba anterior
- #gt – Move para a aba com o número #
- :tabclose – Fecha a aba, e as janelas dentro dela.
- :tabonly – Fecha todas as abas, menos a atual.
Busca, recursivamente, a string batata em todos os arquivos com extensão txt e mostra o resultado em outra janela.
:vimgrep /batata/ **/*.txt | :copen
https://twitter.com/vimtips/status/319494548894126080
- ]c – ir para próxima diferença
- [c – ir para diferença anterior
- dp – copiar a diferença para a outra janela
- do – copiar a diferença para a janela atual
CTags é um programa que lê o código-fonte de um projeto
e gera um mapa de referências entre os arquivos.
O Vim permite pular direto para a definição de um método, a partir do nome de qualquer outro arquivo.
Então, se você estiver em um projeto Rails, editando um Controller, você pode ir para o método no Model.
- Ctrl + ] – Pula para a definição do método
- Ctrl + w + ] – Abre a definição do método em outra janela
- Ctrl + t – Pula de volta
- [Leader] + ] + r – Refaz o índice de tags, da pasta atual