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:
- NERDTree :: Lista os arquivos em árvore
- colorsel :: Seleciona uma cor hexadecimal
- html_autoclosetag :: Fecha as tags HTML com seu “par”
- ir_black :: Color scheme elegante e organizado
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'
=======================================================================
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!
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.
cara valeu pela dica postada na comunidade! VIM sempre legal!
Parabens!
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
Ó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.
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. 😉
Muito legal mesmo,
são infinitas as possibilidades de personalização do Vim, realmente o melhor. Seleção vertical mata a pau qualquer editor
O artigo é interessante, mas o trocadilho o torna merecedor de uma morte lenta e dolorosa. 😉
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!
Cara, muito loco seu post, vc merece um premio!!!!
Abraços, e valeu!
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.
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.
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.
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.
Gogó,
Adiciona que o arquivo gerado tem extensão .pl e, no caso do windows, o arquivo é gerado dentro da pasta do usuário.
O arquivo gerado que falei se trata do dicionário, após o comando citado…
Ei cara, o título ficou massa 🙂 e o artigo também!
abração Henrique e obrigado pelas dicas
ééééé 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.
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