Olá pessoal. No artigo de hoje, realizaremos mais algumas configurações no arquivo .vimrc que ajudarão a melhorar a experiência com o editor.

Melhorando a usabilidade

Evitando travamentos

Uma das coisas mais chatas que ocorria quando eu comecei a usar o Vim, eram travamentos ocasionais do editor dito como “super estável e leve”. Ao investigar mais a fundo a questão, acabei descobrindo que o problema não estava no software e sim em quem está sentado na cadeira operando (risos).

De fato, o que ocorria era o seguinte: por uma questão de hábito quando trabalhava com outros editores, eu costumava dar um <Ctrl> <s> de tempos em tempos para garantir que meu trabalho fosse salvo. Essa atividade estava tão enraizada no subconsciente que eu nem percebia que estava fazendo isso também no Vim.

Ao realizar essa ação “automática”, o Vim parecia ficar travado, mas a verdade é que o <ctrl> <s> é um comando que desliga o fluxo de transmissão de dados do editor.

Se o Vim travar repentinamente, experimente teclar <ctrl><q> para fazê-lo voltar ao normal.

Quem vem de outros editores certamente passará por essa situação em algum momento. Então para previnir sua ocorrência, basta adicionarmos um parâmetro ao nosso arquivo .bashrc que fica no diretório /home/nomeDoUsuário. Para fazer isso, abra um terminal e digite o seguinte comando:

echo "stty -ixon" >> ~/.bashrc

O comando acima adiciona a linha contendo stty -ixon ao final do arquivo .bashrc. Outra forma de incluir seria abrir o arquivo no Vim e incluir a parametrização no final dele. Fique à vontade para fazer da forma que achar melhor.

Mais alterações no .vimrc

Vamos adicionar mais alguns parâmetros interessantes ao nosso .vimrc.

Tchau tela de boas-vindas

Começaremos tirando aquela tela inicial de boas-vindas. Assim o editor abrirá direto numa janela em branco. Parece bobagem, mas será 1 tecla a menos pressionada, toda vez que você iniciar o editor.

set shortmess+=I

Refresh de alteraçoes externas

Muitas vezes, acabamos realizando alterações em arquivos que estão abertos no Vim usando outra aplicação. Para que o Vim perceba que o arquivo foi alterado externamente, precisamos incluir um parâmetro que fará o editor ler novamente o arquivo em que estamos trabalhando caso ele tenha sido modificado. Inclua no seu .vimrc:

set autoread

Melhorando o scroll

Outro parâmetro interessante é fazer a rolagem da tela iniciar antes do cursor chegar na borda superior ou inferior da janela, tornando a navegação menos cansativa. Adicione ao seu .vimrc:

set scrolloff=5

Novas janelas

O Vim permite trabalhar com várias janelas dividas na tela, seja na horizontal, vertical ou ambos. Nos parâmetros abaixo, configuramos o editor para abrir janelas horizontais, sempre abaixo da janela atual. No caso de janelas verticais, também é interessante parametrizar para abrir sempre à direita da janela atual. Assim quem está usando, sempre saberá onde a nova janela será aberta. Vamos colocar esses 2 parâmetros em nosso .vimrc:

set splitbelow
set splitright

Status sempre à mostra

No .vimrc vamos incluir um parâmetro para sempre deixar à mostra a barra de status.

set lastsatus=2

Mostrando comandos digitados

Além de sempre mostrar a barra de status, também vamos parametrizar o Vim para sempre podermos ver os comandos digitados, incluindo em nosso .vimrc:

set showcmd

Escondendo buffer

Outro parâmetro relacionado à barra de comandos, refere-se ao que o Vim faz quando fechamos um buffer (arquivo carregado na memória pelo Vim). Para não ter que ficar fechando e abrindo o mesmo arquivo, podemos habilitar o recurso de esconder o buffer da tela. Acrescente no seu .vimrc:

set hidden

Autocompletando comandos

Podemos habilitar o autocompletar para comandos com a tecla TAB, igual ao funcionamento no shell bash:

set wildmode=longest,list

Linha de comando dupla

Também podemos ter uma linha de comando um pouco maior abaixo da barra de status, acrescentando:

set cmdheight=2

Alertas visuais

Para o editor não ficar apitando na cabeça a cada erro, que tal adicionar um parâmetro que converte avisos sonoros em visuais? Inclua aí no .vimrc:

set t_vb=

Desligando o match de []{}()

  1. O parâmetro abaixo Desabilita o destaque de conjuntos de paranteses, aspas, etc. Alguns desenvolvedores gostam de manter isso ligado. Eu prefiro desabilitar pois confunde na hora da digitação. Para habilitar use 2 parâmetros: set showmatch e set matchtime = 2. Para desabilitar, use o que está abaixo:
set noshowmatch
  1. Uma alternativa ao showmatch que pode melhorar a usabilidade é alterar a cor de destaquedo cursor quando em cima de conjuntos de parenteses, aspas, colchetes:
hi MatchParen cterm=bold ctermbg=none ctermfg=red

Destacando o cursor

Outra parametrização controversa é mostrar a linha em que o cursor se localiza no momento em um tom mais claro. Use se gostar:

set cursorline

Evitando erros ao sair

Na pressa, às vezes queremos teclar wq para sair do editor e teclamos por exemplo Wq, ocasionando erro. Para evitar esse tipo de coisa, vamos criar alguns aliases que facilitarão em muito a vida:

cab W w
cab  Wq wq
cab wQ wq
cab WQ wq
cab Q q

Mudando a tecla LEADER

No vim, a tecla LEADER normalmente é a / .Podemos alterá-la para ser a tecla de vírgula: :

let mapleader=","

Limpeza do destaque de buscas

A próxima parametrização, mapeia <espaço> para limpar o destaque da busca (quando vc busca termo errado). Se quiser limpar a busca digite <,> (vírgula) e a seguir <espaço> configurando o seguinte no seu .vimrc:

nnoremap <leader><space> : nohlsearch<CR>

Seleção com setas (Windows like)

Particularmente, considero a próxima parametrização altamente dispensável, visto que o vim possui um jeito muito melhor de fazer seleções com o teclado através do modo visual, teclando no modo normal v para selecionar na linha, V para selecionar linhas inteiras, ou ainda <ctrl> v, para selecionar blocos de texto, inclusive no sentido de colunas.

Para quem está acostumado a fazer seleções usando as teclas + SETA, como no Windows, basta adicionar as linhas abaixo ao .vimrc.

set selectmode=mouse,key
set mousemodel=popup
set keymodel=startsel,stopsel
set selection=exclusive

Edição no diretório corrente

A configuração abaixo permite que ao editar um arquivo, o Vim mude o contexto para o diretório em que mesmo se encontra. Muito útil quando abrimos o arquivo no Vim a partir de outro diretório e lembramos que queremos alterar algum outro arquivo nesse mesmo diretório.

set autochdir

Finalizando

Dessa vez fizemos mudanças substanciais no comportamento do Vim de modo a melhorar a usabilidade e evitar erros bobos que tomam muito tempo. No próximo artigo falaremos um pouco sobre temas/esquemas de cores. O uso de esquemas de cores, além de melhorar a legibilidade, tornam o editor mais atraente para uso.

Até a próxima!