Disseram-me IDE! Então eu VIM

Existem muitos artigos e flamewars (principalmente entre vim x emacs) sobre “a melhor IDE para se desenvolver qualquer coisa”. Não vou dizer qual a melhor, até mesmo porque a melhor é a que você gostar mais, mas nesse artigo vou tratar de um programa bem rico e customizável: o VIM.

De início, utilizar o vim parece um “parto”. Tudo é comando, as teclas de atalho mais conhecidas não funcionam, aquela interface simples chega a dar repulsa. Felizmente, isso passa. Nada do que um bom :help para aprender a mexer mo bichinho. Seguir o tutorial padrão do sistema é uma ótima ideia para se aprender o básico, e, daí, aproveitar o máximo que esse editor de textos pode proporcionar.

Uma das características principais do vim é sua customização. Praticamente tudo é customizável, e até programável. A possibilidade de fazer plugins e outras coisas mais como “syntax highlight” vão incrementando sua área de edição a ponto de deixar da maneira que você quiser.

Já utilizo o vim há um tempo, inicialmente para montar HTML + CSS e atualmente para programar em Rails. Praticamente abandonei o Eclipse e o Aptana para utilizar somente o vim. Para chegar a tal ponto de “migrar” de IDE, tive que passar por um relativo processo de customização do editor para que ele ficasse “no ponto”. Existe um arquivo chamado “.vimrc” na pasta raiz da aplicação. É lá que você vai aplicar as alterações propostas nesse artigo.

O arquivo que disponibilizo é uma versão customizada do vim criada por mim, e está todo comentado.

Inicialmente, recomendo a instalação dos seguintes plugins:

Depois, instale um corretor ortográfico da língua portuguesa. Para isso você precisará ter a versão 7 ou superior do vim.

  • Faça o download do dicionário
  • Descompacte o arquivo
  • No vim, digite o comando ‘:mkspell pt /caminho/do/descompactamento/pt_BR’
  • Copie o arquivo gerado para a pasta ~/.vim/spell/
  • Ative a correção: ‘:set spell’
  • Escolha o dicionário: ‘:set spelllang=pt’

Pronto, esses são os plugins que eu recomendo para a utilização do vim e transformá-lo numa verdadeira IDE, mas não basta só isso. Vamos agora para o principal: o arquivo de configuração .vimrc. Eu configurei um arquivo que pode ser utilizado tanto no vim para windows como na versão linux. Peguei um apanhado de configurações da internet e personalizei ao meu gosto. Acredito que provavelmente seja do gosto da maioria.

Se você utiliza o vim no Windows, adicione seguinte linha no início do arquivo:

source $VIMRUNTIME/vimrc_example.vim

Abaixo, o arquivo comentado e explicado.

"""""""""""""""""""""""""""""""""""
" CONFIGURAÇÕES PADRONIZADAS GOGS "
"""""""""""""""""""""""""""""""""""

set number                    " Numera as linhas
set nobackup                  " Não salva arquivos de backup~
set wildmode=longest,list     " Completa o comando com TAB igual o bash

set ignorecase                " Ignora o case sensitive nas buscas
set smartcase                 " Se tiver alguma letra maiúscula, ativa o case sensitive

set smartindent               " Auto-indenta
set expandtab                 " Identa com espaços

set tabstop=2                 " Quantidade de espaços por identação
set shiftwidth=2              " Quantidade de espaços da auto-indentação

set guioptions-=T                    " Deixa a GUI sem a toolbar
set autochdir                 " Vai pro diretório do arquivo aberto

" Corretor ortográfico
set spelllang=pt              " Escolhe o dicionário

" Inicia no modo INSERT
set im
imap <ESC> <C-L>

" Cria e escolhe as abas
noremap <C-T> :tabnew<CR>
noremap <C-TAB> :tabnext<CR>
noremap <C-S-TAB> :tabprevious<CR>
inoremap <C-T> <C-O>:tabnew<CR>
inoremap <C-TAB> <C-O>:tabnext<CR>
inoremap <C-S-TAB> <C-O>:tabprevious<CR>

" Mover texto com os TABs
vnoremap < <gv
vnoremap > >gv
noremap <TAB> >
noremap <S-TAB> <

" Auto-fecha parênteses, chaves etc.
"inoremap { {}<LEFT>
"inoremap ( ()<LEFT>
"inoremap [ []<LEFT>
"inoremap " ""<LEFT>
"inoremap ' ''<LEFT>

" Move linhas ou blocos usando ALT+SETA
nnoremap <A-DOWN> mz:m+<CR>`z==
nnoremap <A-UP> mz:m-2<CR>`z==
inoremap <A-DOWN> <Esc>:m+<CR>==gi
inoremap <A-UP> <Esc>:m-2<CR>==gi
vnoremap <A-DOWN> :m'>+<CR>gv=`<my`>mzgv`yo`z
vnoremap <A-UP> :m'<-2<CR>gv=`>my`<mzgv`yo`z

" Deleta linha com CTRL+D
noremap <C-D> dd
vnoremap <C-D> <C-C>dd
inoremap <C-D> <C-O>dd

" Organiza identação de um bloco selecionado com CTRL+ALT+F
noremap <C-A-F> ==
vnoremap <C-A-F> <C-Q>==
inoremap <C-A-F> <C-O>==

" Command-line com CTRL+ALT+C
noremap <C-A-C> :
vnoremap <C-A-C> <C-Q>:
inoremap <C-A-C> <C-O>:

" Busca com CTRL+F
noremap <C-F> /
vnoremap <C-F> <C-Q>/
inoremap <C-F> <C-O>/

" Abre arquivos com CTRL+O
noremap <C-O> :tabnew 
vnoremap <C-O> <C-Q>:tabnew 
inoremap <C-O> <C-O>:tabnew 

" Função que usa o omnicomplete apenas com o CTRL+SPACE
inoremap <C-SPACE> <C-X><C-O>
filetype plugin on

"""""""""""""""""""""""""""""
" Atalhos comuns de teclado "
"""""""""""""""""""""""""""""

" Permite selecionar com SHIFT + SETA como no Windows
set selectmode=mouse,key
set mousemodel=popup
set keymodel=startsel,stopsel
set selection=exclusive

" Backspace no modo de visão apaga a seleção
vnoremap <BS> d

" CTRL-X e SHIFT-Del corta
vnoremap <C-X> "+x
vnoremap <S-Del> "+x

" CTRL-C e CTRL-Insert copia
vnoremap <C-C> "+y
vnoremap <C-Insert> "+y

" CTRL-V e SHIFT-Insert cola
noremap <C-V>        "+gP
noremap <S-Insert>   "+gP
inoremap <C-V>       <C-O>:set nosi<CR><C-R>+<C-O>:set si<CR>
inoremap <S-Insert>  <C-R>+
cnoremap <C-V>       <C-O>:set nosi<CR><C-R>+<C-O>:set si<CR>
cnoremap <S-Insert>  <C-R>+

" CTRL-S salva
noremap <C-S>  :update<CR>
vnoremap <C-S> <C-C>:update<CR>
inoremap <C-S> <C-O>:update<CR>

" CTRL-Z desfaz
noremap <C-Z> u
vnoremap <C-Z> <C-C>u
inoremap <C-Z> <C-O>u

" CTRL-Y refaz
noremap <C-Y> <C-R>
inoremap <C-Y> <C-O><C-R>

" CTRL-A seleciona tudo
noremap <C-A> gggH<C-O>G
inoremap <C-A> <C-O>gg<C-O>gH<C-O>G
cnoremap <C-A> <C-C>gggH<C-O>G
onoremap <C-A> <C-C>gggH<C-O>G
snoremap <C-A> <C-C>gggH<C-O>G
xnoremap <C-A> <C-C>ggVG

" CTRL-F4 fecha a janela
noremap <C-F4> <C-W>c
inoremap <C-F4> <C-O><C-W>c
cnoremap <C-F4> <C-C><C-W>c
onoremap <C-F4> <C-C><C-W>c

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Opções de plugins (Retire essas linhas se não tiver estes plugins) "
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

colorscheme ir_black                                              " Escolhe o tema
au BufNewFile,BufRead *.txt source ~/.vim/syntax/txt.vim          " Carrega o arquivo de sintaxe para TXT

" Atalhos para plugins
noremap <F5>  :NERDTree<CR>
noremap <F7>  :set spell<CR>z=
inoremap <F5> <C-O>:NERDTree<CR>
inoremap <F7> <C-O>:set spell<CR><C-O>z=

"""""""""""""""""""""""
" Informações e dicas "
"""""""""""""""""""""""
" Plugins recomendados:
" - NERDTree :: Lista os arquivos em árvore
" - ir_black :: Colorscheme bem bonito
" - txt.vim :: Sintaxe para arquivos de texto feito pelo aurelio.net
" - jquery.vim :: Sintaxe para arquivos jquery.vim
" - html_autoclosetag :: Fecha as tags HTML automaticamente
" - snipMate :: Autocompleta funções inteiras
"               Para que o <tab> do snipMate não anule o TAB para identar
"               blocos, edite o arquivo ~/.vim/after/plugin/snipMate.vim
"               substituindo os mapeamentos 'ino' por 'imap' como no ex.:
"               imap <silent> <tab> <c-r>=TriggerSnippet()<cr>
"               imap <silent> <s-tab> <c-r>=BackwardsSnippet()<cr>
"               imap <silent> <c-r><tab> <c-r>=ShowAvailableSnips()<cr>
"               Apague todas as linhas começadas por 'snor'.
"
" Corretor ortográfico em português brasileiro:
" - Faça o download do dicionário em: http://www.broffice.org/verortografico/baixar
" - Descompacte o arquivo
" - No vim, digite o comando ':mkspell pt pt_BR'
" - Copie o arquivo pt.utf-8.spl gerado para a pasta ~/.vim/spell/
" - Ative a correção: ':set spell'
" - Escolha o dicionário: ':set spelllang=pt'

19 Comments

  1. Posted agosto 31, 2009 at 3:46 pm | Permalink | Responder

    =======================================================================
    SNIPMATE – Plugin para complementar trechos inteiros de código
    =======================================================================
    Outro plugin que recomendo fortemente é o snipMate, só vendo para crer!
    video no vimeo: http://www.vimeo.com/3535418

    link oficial: http://www.vim.org/scripts/script.php?script_id=2540

    =======================================================================
    FUZZYFINDER – Um recurso portado do editor texmate do MAC
    =======================================================================
    Como dizem nas propagandas sem fim da TV, e tem mais
    o plugin fuzzyfinder (no meu caso uso mapeamentos para agilizar)

    link oficial: http://www.vim.org/scripts/script.php?script_id=1984

    * Veja também
    + plugin visincr – incrementa números no modo visual
    + project – gerencia projetos abrindo todos os arquivod e um projeto
    + http://vivaotux.blogspot.com/2009/01/nosso-livro-sobre-o-vim.html
    + http://www.slideshare.net/ZendCon/vim-for-php-programmers-presentation
    apesar de ser voltado para php tem muitas dicas para uso em programação

    A troca de informações é de suma importância neste momento de mudança de paradigma, o conhecimento está espalhado por todos os lados, e temos a obrigação de dinfundi-lo. Valeu!

    • Henrique Gogó
      Posted setembro 7, 2009 at 9:39 pm | Permalink | Responder

      OBRIGADO CARA!

      Realmente suas dicas foram surpreendentes e vou testá-las. Seu comentário havia parado nos “SPAMs” não sei por quê.

      Valeu a dica.

  2. thiago
    Posted agosto 31, 2009 at 4:41 pm | Permalink | Responder

    cara valeu pela dica postada na comunidade! VIM sempre legal!
    Parabens!

  3. Philipe Farias
    Posted agosto 31, 2009 at 5:14 pm | Permalink | Responder

    Henrique uma alternativa para facilitar ainda mais o uso de atalhos no estilo editores “comuns” (entre outras coisas) é instalar o Cream [1]. Ele é uma versão do Vim com várias configurações out-of-the-box nesse sentido.

    [1] http://cream.sourceforge.net/index.html

    • Henrique Gogó
      Posted agosto 31, 2009 at 5:20 pm | Permalink | Responder

      Ótima dica, Philipe, mas não vi no Cream nenhuma listagem de arquivos em árvore (como o NERDTree) nem tampouco um corretor ortográfico brasileiro.

      • Philipe Farias
        Posted agosto 31, 2009 at 5:54 pm | Permalink

        Acredito que tenha como utilizar os plugins normais do Vim nele. Tem também spell checker entre as features padrões (mas acho que não vem com dic pt-br).

        De qualquer forma prefiro o Vim mesmo com meu vimrc e plugins.
        Lembrei do Cream por causa dos seus atalhos.😉

  4. Posted setembro 1, 2009 at 11:29 am | Permalink | Responder

    Muito legal mesmo,

    são infinitas as possibilidades de personalização do Vim, realmente o melhor. Seleção vertical mata a pau qualquer editor

  5. JCCyC
    Posted setembro 1, 2009 at 12:22 pm | Permalink | Responder

    O artigo é interessante, mas o trocadilho o torna merecedor de uma morte lenta e dolorosa.😉

  6. Posted setembro 1, 2009 at 4:49 pm | Permalink | Responder

    Amigão, irado seu POST, eu uso o VIM e tals, mas nunca tive saco de configurar muito mais coisa que as cores dele!

    Muito bom!

  7. Posted setembro 3, 2009 at 3:19 pm | Permalink | Responder

    Cara, muito loco seu post, vc merece um premio!!!!

    Abraços, e valeu!

  8. Posted setembro 6, 2009 at 12:11 am | Permalink | Responder

    Henrique, poderia detalhar melhor a instalação do dicionário? Qual arquivo baixar, onde descompactar e como fazer o mkspell funcionar, pois tentei aqui e não estou obtendo êxito.
    Parabéns pelo post.

    • Henrique Gogó
      Posted setembro 6, 2009 at 12:26 pm | Permalink | Responder

      Para baixar, utilize o link que eu coloquei no blog http://www.broffice.org/verortografico/baixar renomeie o arquivo para .zip e descompacte onde quiser.
      Depois entre no VIM e digite :mkspell pt /caminho/do/descompactamento/pt_BR …. claro que substituindo /caminho/do/descompactamento pelo caminho onde você descompactou o arquivo. Deixe rodar.
      Na mesma pasta ira ser gerado um arquivo. Copie para a pasta /spell do diretório raiz do vim. Se não existir, crie essa pasta.

      Penso que no blog já havia postado esses passos, mas segue acima, mais detalhado.

      • Posted setembro 6, 2009 at 6:50 pm | Permalink

        Henrique,

        Fui lá, baixei o arquivo acor_pt-BR-206.zip, descompactei, joguei o arquivo acor_pt-BR.dat em c:\.

        Digitei-> :mkspell pt c:\pt_BR
        Digitei-> :mkspell pt c:\acor_pt-BR.dat

        E nenhum dos comando funcionou.
        Estou usando o Vista.

        Sds, Luciano.

      • Henrique Gogó
        Posted setembro 7, 2009 at 11:07 am | Permalink

        Luciano,

        Não sei qual o arquivo que você baixou, mas baixe esse:
        http://www.broffice.org/files/Vero_pt_BR_V205AOS.oxt

        Quando descompactar (depois de renomeado para zip), haverá dois arquivos pt_BR … então execute o comando.

  9. Andrey Agra
    Posted setembro 7, 2009 at 2:10 am | Permalink | Responder

    Gogó,

    Adiciona que o arquivo gerado tem extensão .pl e, no caso do windows, o arquivo é gerado dentro da pasta do usuário.

  10. Andrey Agra
    Posted setembro 7, 2009 at 2:44 am | Permalink | Responder

    O arquivo gerado que falei se trata do dicionário, após o comando citado…

  11. Posted outubro 11, 2009 at 11:42 am | Permalink | Responder

    Ei cara, o título ficou massa🙂 e o artigo também!

    abração Henrique e obrigado pelas dicas

  12. rafa
    Posted fevereiro 5, 2011 at 12:15 pm | Permalink | Responder

    ééééé seu plagiador cara de pau. o Marcellus do meiobit ja mandou seu endereço advogado e pro sistema anti plagio do WP.
    tema pelo seu orificio retrofuricular.

    • Henrique Gogó
      Posted fevereiro 5, 2011 at 8:46 pm | Permalink | Responder

      Cara, não plagiei nada. Escrevi todo o artigo de próprio punho, e criei o script que falo. Claro que o script copiei diversos códigos de outros, mas foi uma colcha de retalhos, não plagiei discaradamente nada, principalmente no texto do artigo. Por favor me envie o link do Marcellus para que eu compare. Obrigado

4 Trackbacks

  1. By Arquivo .vimrc: Disseram-me IDE! Então eu VIM on setembro 1, 2009 at 8:31 am

    […] Enviado por Henrique Gogó (henriquegogoΘgmail·com): “Existem muitos artigos e flamewars (principalmente entre vim x emacs) sobre “a melhor IDE para se desenvolver qualquer coisa”. Não vou dizer qual a melhor, até mesmo porque a melhor é a que você gostar mais, mas nesse artigo vou tratar de um programa bem rico e customizável: o VIM.” [referência: henriquegogo.wordpress.com] […]

  2. By Disseram-me IDE! Então eu VIM « klebermota.eti.br on setembro 2, 2009 at 9:41 am

    […] Referencia (https://henriquegogo.wordpress.com) setembro 2nd, 2009 | Tags: configuração, vim, vimrc | Category: Dicas […]

  3. […] recomendo a leitura do artigo do Henrique gogó para ajudar na instalação dos plugins do Vim. Até vejo o rosto feliz de alguns desenvolvedores […]

  4. By links for 2010-04-15 « sySolution on abril 15, 2010 at 12:01 pm

    […] Disseram-me IDE! Então eu VIM « Blog do Gogs (tags: vim) […]

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: