Myhro Blog

Instalando e configurando o Vim no Windows

Após passar alguns dias procurando um bom tutorial de instalação do Vim) (de configuração na verdade, já que instalar não é nem de longe a parte mais difícil) e não encontrar, resolvi colocar a mão na massa. Após algumas horas (em torno de seis, na verdade), consegui deixar este maravilhoso editor do jeito que queria. Ou pelo menos algo bem próximo disso. Ficou faltando um auto-completar mais abrangente, com as funções nativas da linguagem qual se está programando (e não apenas as quais escrevo). Não é impossível fazê-lo, mas achei um tanto quanto desnecessário ter de realizar um procedimento diferente para cada linguagem qual se pretenda utilizar.

O Vim é um editor de textos mítico. Lembro que fiz de tudo para evitar qualquer contato com o mesmo (ou seu antecessor, o vi) nos meus primeiros anos de aventura no mundo Linux. Seus comandos “sem pé nem cabeça” (ao menos era o que eu pensava na época - hoje vejo a grande jogada que é evitar ao máximo o movimento das mãos sobre o teclado) me assustavam só de ler a respeito. O primeiro contato com o Vim normalmente não é muito diferente deste relato do Aurélio Jargas. Tirinhas como esta, do Vida de Programador, refletem perfeitamente o desespero que bate ao se tentar fechar o editor. Se é assim para sair, imagine o trabalho que não deve se ter para usá-lo?

A verdade é que embora o Vim seja assustador em um primeiro contato, em poucos minutos é possível aprender seus comandos básicos e começar a amansar a fera. A partir do ”Vim tutor” (se você estiver usando o Linux pode acessá-lo com o comando “vimtutor”; no Windows há um atalho no menu iniciar), você pode seguir as 7 lições básicas e começar a se acostumar com os comandos mais comuns. Este guia é simplesmente um arquivo texto aberto com o próprio Vim. Você pode lê-lo, estudá-lo e praticá-lo quantas vezes sentir necessidade. Para relembrar rapidamente um comando esquecido, basta consultar a tabela ”vi/vim graphical cheat sheet”. A curva de aprendizado é acentuada, mas a recompensa é inigualável.

Depois de realizada a instalação (qual sugiro que seja desmarcada a opção ”Add an Edit-with-Vim context menu entry” - logo mais você entenderá porque), crie um arquivo chamado “_vimrc” no seu diretório pessoal (“C:\Documents and Settings\Usuario” no Windows XP ou “C:\Users\Usuario” no Windows Vista/7). Este arquivo é responsável pelas configurações que tornam o uso do Vim mais agradável e é completamente personalizável de acordo com o gosto do freguês.

O meu “_vimrc” ficou assim:

" Desabilitar o mouse:
set mouse=

" Desabilitar menus:
set guioptions-=m
set guioptions-=r
set guioptions-=T

" Desabilitar backups:
set nobackup
set noswapfile
set nowritebackup

" Cores e tema:
colorscheme slate
filetype on
syntax on

" Clipboard do sistema:
set clipboard=unnamed

" Tabs por espaços:
set expandtab
set shiftwidth=4
set tabstop=4

" Indentação:
filetype plugin indent on
set autoindent

" Régua, quebra e número de linhas:
set linebreak
set number
set ruler

" Navegação entre abas:
map <C-Tab> :tabnext<CR>
map <S-Tab> :tabprevious<CR>

" Busca:
set hlsearch
set ignorecase
set incsearch
" Limpar os resultados destacados:
nmap <silent> <C-C> :silent noh<CR>

" Fonte e janela:
set guifont=consolas:h10
set encoding=utf-8
set lines=36 columns=142
set wildmenu
" Salvar:
nmap <silent> <C-S> :silent w<CR>

Os parâmetros estão separados por seções. Sendo assim, vou explicar o propósito de cada uma:

  • Desabilitar o mouse: se você usa o mouse no Vim, you are doing it wrong!
  • Desabilitar menus: a toolbar do gVim (modo gráfico do Vim, usado por padrão no Windows) ocupa espaço, torna a aparência do mesmo esquisita (ele foi feito para ser um editor “modo texto”) e induz o usuário a utilizar o mouse, que é justamente a última coisa que você vai precisar ao lidar com o Vim.
  • Desabilitar backups: evita que o Vim crie arquivos começando com “~” ou terminados em “.swp” desnecessariamente.
  • Cores e tema: habilita o syntax hightlighting e escolhe um tema para fugir do padrão “preto no branco”, que é o default. Gostei bastante do “slate”. É um tema escuro e lembra vagamente o “Obisidian”, qual utilizo no Notepad++.
  • Clipboard do sistema: força o Vim a utilizar a área de transferência padrão do sistema ao invés dos seus próprios clipboards. Assim você pode copiar “de” e “para” ele sem qualquer preocupação.
  • Tabs por espaços: troca o tamanho padrão das tabulações de 8 para 4 espaços (utilizando quatro espaços - literalmente - ao invés de um “\t”).
  • Indentação: como o próprio nome já diz, habilita a indentação automática dos blocos de texto.
  • Régua, quebra e número de linhas: mostra o tempo todo na barra de status a linha e coluna atual, além de mostrar a contagem das linhas e quebrá-las por palavras (ao invés de caracteres).
  • Navegação entre abas: possibilita a navegação entre as abas utilizando CTRL+TAB/SHIFT+TAB.
  • Busca: habilita o destaque visual das palavras quais casam com a busca realizada, além de torná-la case-insensitive. A opção “Limpar os resultados destacados” serve para mapear o comando CTRL+C (que não tem utilidade por padrão) para remover o efeito “marca texto” causado pela busca. Caso contrário as palavras continuariam marcadas indefinidamente.
  • Fonte e janela: troca a fonte padrão (no Windows é a Fixedsys - não que esta seja ruim - que tem os traços muito grossos) pela Consolas, seta a codificação padrão como UTF-8 e ajusta o tamanho da janela para ficar próximo de 1024x600 pixels. É uma opção pessoal, pois não gosto de editores de texto maximizados ocupando a tela toda do meu notebook (que tem resolução de 1333x768 px). O wildmenu ajuda na navegação por arquivos no menu “:” e a opção “Salvar” faz com que o atalho CTRL+S salve o arquivo (o mesmo que digitar ESC+”:w” (sem aspas)).

Ao final, a aparência do seu editor deve estar mais ou menos assim:

Como havia sugerido, desmarcando a opção de chamar o Vim pelo menu de contexto, você acaba perdendo o atalho extremamente prático de editar qualquer arquivo com um clique do botão direito. O problema é que a extensão do shell que acompanha o Vim para Windows não cria abas ao se editar vários arquivos. Felizmente isto pode ser facilmente resolvido com uma simples adição no registro do Windows. Basta salvar um arquivo “.reg” com o seguinte conteúdo (ou editar manualmente o registro) e executá-lo em seguida (o comando é uma linha só do “@” até as últimas aspas):

REGEDIT4
[HKEY_CLASSES_ROOT\*\Shell\Edit with &Vim\command]
@="\"C:\\Program Files (x86)\\Vim\\vim73\\gvim.exe\" -p --remote-tab-silent \"%1\" \"%*\""

Para ter acesso ao recuso “auto-complete”, que como disse, se não configurá-lo para cada linguagem ele não vai ser perfeito (mesmo assim quebra um galho), basta baixar o plugin SuperTab e colocar o arquivo “.vim” na pasta “C:\Program Files (x86)\Vim\vim73\plugin”. Daí em diante o Vim passará a carregar o plugin automaticamente e você pode completar os nomes das funções utilizando a tecla “Tab”. Só preste atenção no nome da pasta onde o Vim está instalado, pois pode não ser o mesmo se a versão do seu Windows não for 64 bits.

Daí em diante, basta encarar diariamente este editor tão peculiar, interessante e único que é o Vim. Tendo completado 20 anos no início deste mês, existem pessoas que o utilizam há décadas e ainda aprendem coisas novas no dia-a-dia. Você provavelmente não vai dominá-lo na primeira vez que o utilizar (e talvez este dia nunca chegue), mas pode ter a certeza que nenhum minuto gasto atrás dessa “janelinha preta”, como diria o Carlão, foi desperdiçado. Cada fração de segundo dedicada ao Vim resultam em muitas horas ganhas em produtividade.

Update: os plugins e configurações que utilizo no Vim agora estão disponíveis no GitHub.

Referências:
1. Accessing the system clipboard
2. carllerche / vimrc
3. Consolas in GVIM on Windows
4. Converting tabs to spaces
5. Getting cool auto-indent in vim
6. Hide toolbar or menus to see more text
7. How did I live without vim’s wildmenu all these years?
8. Quick VIM question (unhighlighting search terms after search)
9. Vim 7 + Putty + Copy Paste
10. Vim Recipes: Inserting Accented or “Foreign” Characters
11. VIM Swap and backup files