Skip to content

Latest commit

 

History

History
189 lines (141 loc) · 10.5 KB

README.textile

File metadata and controls

189 lines (141 loc) · 10.5 KB

Vim

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

Documentação

Dicionário de teclas

  • [Leader]: \

Instalação

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

Dependências

MacOSX

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

Linux – Ubuntu e Debian

Não é necessário instalar nada

Windows TODO

Modificações do VIM

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

Bundled Plugins

  • 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.
    • [Leader]]
      : Mostra o buffer atual no NERDTree.
    • 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
  • 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
  • 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.

Temas de cores

Atualmente, só uso o luna(Pychimp/vim-luna).

Já usei, mas acabei removendo por não usar mais:

Para mudar o tema, use o comando:

:colorscheme nome_do_tema

Observe que o Vim consegue completar o nome do tema, usando [TAB]

Tips

Sessões

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

Tabs

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

Grep

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

Vim Diff

Comparar o arquivo aberto com outro
:vert diffsplit <caminho_para_outro_arquivo>

Movimentação

  • ]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

Exuberant CTags

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

Vim and CTags