Skip to content

acdesouza/vimfiles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

My ~/.vim folder

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published