Melhorando o editor VIM

O Vim (Vi IMproved ou Vi melhorado) é uma excelente ferramenta na hora de:
– Editar textos;
– Editar arquivos de configuração;
– Programar;
– etc. 🙂

Mas além de ser um ótimo editor e ferramenta de programação ele pode ser customizado e adaptado para várias funcionalidades.

Seu arquivo de configuração é o /etc/vim/vimrc ou /etc/vimrc dependendo da distribuição. Podemos fazer algumas melhorias nele. Essas configurações foram testadas em Debian/Ubuntu mas funcionam em OpenSuse e espero que em outras distro também ;-).

Muitas das funções que coloco no arquivo são para vim de 7.0 pra cima, foram buscadas no em listas de Python, PHP, Linux e no site do meu amigo Aurélio Jargas.

No arquivo de configuração os comentários são aspas (“), mas primeiro vamos instalar o corretor ortográfico pro nosso editor, isso mesmo ele aceita corretor ortográfico em português.

Primeiro baixe o corretor no seu diretório pessoal ou no /tmp, baixe do site das extensões do LibreOffice ou faça download direto do link com wget:

root# cd /tmp

root> /tmp# wget http://extensions.libreoffice.org/extension-center/vero-verificador-ortografico-e-hifenizador-em-portugues-do-brasil/pscreleasefolder.2012-01-04.1563120832/2.1/vero_pt_br_v210aoc.oxt

O arquivo baixado em formato .oxt nada mais é que um compactado em formato zip, vamos descompactá-lo com:

root: /tmp# unzip vero_pt_br_v210aoc.oxt

No mesmo diretório onde você descompactou o arquivo abra o vim e compile o dicionário de palvras:

root: /tmp# vim

Dentro do vim digite :mkspell pt pt_BR

Não se preocupe com as mensagens de palvras duplicadas ou de erros, aperte a seta pra baixou ou enter para continuar até o final, aperte quantas vezes for preciso.

Feito isso ele vai gerar no diretório atual um dicionário chamado pt.utf-8.spl,basta copiar ele para o diretório do vim, se você não for root basta copiar para seu diretório pessoal no subdiretório ~/.vim/spell.

Copie para /usr/share/vim/vim73/spell/ (geralmente é /usr/share/vim/vim/spell).

root: /tmp# cp pt.utf-8.spl /usr/share/vim/vim*/spell/

Pronto com o dicionário compilado e instalado vamos ao nosso arquivo de configuração:

Faça um backup do seu /etc/vim/vimrc ou /etc/vimrc , ou se preferir crie um arquivo apenas pra seu usuário com o nome de .vimrc com o seguinte conteúdo:

" Opções Básicas de Edição do Vim
runtime! debian.vim 	" Executa o script para programas que usam o Vim em distros Debian Like
syntax on		" Habilita o recurso de Syntaxe para identificar conteudo nos arquivos
set showcmd		" Mostra (parcialmente) o status dos comandos
set showmatch		" Mostra o fechamento de { ( [ .
set ignorecase		" Faz o Vim tratar maiúsculas e minúsculas sem diferença (case insensitive)
set smartcase		" Faz busca inteligente
set incsearch		" Faz busca incremental
set autowrite		" Salva automaticamente antes de comandos como :next e :make
"set hidden             " Esconde os buffers quando eles sao abandonados
"set mouse=a		" Habilita o uso do mouse (todos os modos) em  terminais
set ruler		" habilita a régua (mostrar linha e coluna no canto inferior direito)
set bg=dark		" Coloca o fundo (background) escuro, melhora o uso do vim no modo gráfico por exemplo.
set number		" habilita a numeração das linhas
set hls			" Grifa o resultado da busca
set wildmode=longest,list " Para completar com TAB igualzinho o bash faz (Use CTRL+P para completar)
set hlg=pt		" Idioma preferido para buscar ajuda
set ul=500		" máximo de mudanças que podem ser desfeitas
set ai			" Habilita a autoindentação
" F2 Para 'ocultar' e F3 voltar os comentarios do arquivo atual
noremap <F2> :hi Comment ctermfg=black guifg=black<cr>
noremap <F3> :hi Comment term=bold ctermfg=cyan guifg=cyan<cr>
" Alterna entre janelas sem sair do modo insercao (depois do :split)
map <F4> <esc><c-w><c-w>
" Aperte F5 e a tela fica embaralhada e F5 para voltar ao normal"
map <F5> ggVGg?
" Procura a primeira linha vazia e comeca a editar
map <F6> gg/^$<cr>i#
" Remove espaços redundantes no fim das linhas com F7
map <F7> <esc>mz:%s/\s\+$//g<cr>`z
" Retira os ^M que ficam no final de arquivos salvos pelo windows. Aperte F8 e suma com eles.
map <F8> :%s/\r//g
" Cria o cabecalho padrao para shell script
map <F9>  ggO#!/bin/bash
          \<c-o>:r!echo %<cr># <c-o>o
          \# Versao: <c-o>o
          \# Script para:<c-o>o
          \# Autor: Vagner Fonseca<cr>
" Com o cursor encima de alguma funcao PHP e aperte o F10 e ele vai buscar no site do php.net a definição para ela.
map <F10> "vyiw:new:execute "r!lynx --dump http://br.php.net/manual/en/function.".@v.".php":set nonu:1
" Abreviações para quando a tecla CAPS LOCK estiver ativada."
cab W w | cab Q q | cab Wq wq | cab wQ wq | cab WQ wq
" Função que fecha automaticamente { ( [, ao escrevê-los o vim fecha automaticamente.
imap { {}<left>
imap ( ()<left>
imap [ []<left>
" Salva os arquivos .sh com permissao de escrita
au BufWritePost *.sh  !chmod +x %
" DiffApaga: apagar uma entrada num arquivao DIFF
"map ,di :.,/diff -[uNr]/-d<cr>
" HtmlSyntaxe: carregar uma sintaxe HTML alternativa
"map ,hs :so ~/.vim/synload.vim<cr>:so ~/.vim/html.vim<cr>
" Busca colorida em verde
hi  Search ctermbg=green ctermfg=black
hi IncSearch ctermbg=black ctermfg=cyan
" Ruler e cursor sempre em branco
hi StatusLine ctermfg=white
" Faz os resultados da busca aparecerem no meio da tela
nmap n nzz
nmap N Nzz
nmap * *zz
nmap # #zz
nmap g* g*zz
nmap g# g#zz
"Arquivos .sh sao sempre bash, e não sh
au FileType sh let b:is_bash=1
" Palavras-chave para destacar em qualquer tipo de arquivo
syn case ignore
syn keyword p_c vagner fonseca Vagner Fonseca
hi p_c ctermbg=white ctermfg=black
" Mail: Configuracoes especiais para arquivos de email
au FileType Mail set fo=ctq tw=65 et
" Man: Paginas de manual sao na verdade textos em NROFF
au BufNewFile,BufRead *.man set ft=nroff
" TXT: Arquivos texto tem tratamento especial
au BufNewFile,BufRead *.txt   set tw=75 ts=8 ft=txt "spell
au BufNewFile,BufRead *README,*NEWS,*TODO set ft=txt "spell
" Python: TAB colorido e outras configuracoes
au FileType python set ts=8 tw=80 noet
au FileType python syn match pythonTAB '\t\+'
au FileType python hi pythonTAB ctermbg=blue
"au FileType python set list listchars=tab:··
au FileType python hi pythonString ctermfg=lightgreen
au FileType python hi pythonRawString ctermfg=lightgreen
" Makefile: ele adora usar linhas compridas malas
au BufNewFile,BufRead Makefile set tw=0
" Mgp: mudando algumas cores na sintaxe do MagicPoint
au FileType mgp hi mgpFile ctermfg=darkcyan
au FileType mgp hi mgpCommand ctermfg=yellow
" Habilita o corretor ortográfico
set spell spelllang=pt
" Desabilita o corretor ortografico
"set nospell

Basta user agora que o servidor irá mostras as palavras que não constam do dicionário grifadas:

Use control+p pra ele completar as palavras do seu texto, com palavras já existentes no texto:

Espero ter ajudado a melhorar seu uso do sistema e não se esqueça de assinar e divulgar nosso portal.

  • Muito bom..
    Mais agora toda vez que vou abrir o vim da isso:

    $ vim
    :hi * Comment term=bold ctermfg=cyan guifg=cyan
    Nenhuma associação encontrada
    Nenhuma associação encontrada
    Nenhuma associação encontrada
    Nenhuma associação encontrada
    Aperte ENTER ou digite um comando para continuar

  • Gustavo Mota Carvalhaes

    Muito bacana essa sua dica, Vagner Fonseca!
    Obrigado por compartilhá-la. O interessante que ao fazer os procedimentos com o ‘vi’ o comando ‘mkspell’ é logo rejeitado por ele. Fiquei frustrado, então, resolvi apt-get install vim, e foi tudo numa boa.
    Tenha uma boa tarde.