Uma Lição de VIM #15.6: Plugins – Auto-pairs

(Essa é a parte em que o VIM fecha as coisas pra você.)

O sexto plugin da lista de plugins que eu vou falar é Auto-Pairs. Como de costume, para instalar o plugin pelo Vundle:

Bundle ‘jiangmiao/auto-pairs’

Uma vez instalado o plugin, você verá que cada ', ", (, [ e { irá, automagicamente, gerar o seu respectivo ', ", ), ] e }. Simples assim.

Entretanto, Auto-Pairs não funciona bem com o modo visual (se você já usou TextMate ou Sublime Text, deve ter percebido que se você usar uma das combinações acima com uma área selecionada, o editor vai “circular” a área selecionada com o par indicado). O que existe é [Alt]e em modo de inserção que faz a troca rápida entre o caractere de fechamento de pair com a próxima palavra.

Por exemplo, se você tiver

auto

… com o cursor posicionado entre as duas aspas e usar [Alt]e, você irá ficar com

auto

Ainda, o Auto-pairs tem um controle para “pular” sobre os caracteres de fechamento já existentes. Se ele adicionar um “)” (que deve ficar antes do cursor), quando você pressionar “)” no seu teclado, ao invés de adicionar mais um “)”, o cursor irá pular o “)” existente.

Embora isso pareça bom, em certos casos pode ser um problema. Por exemplo, caso você tenha o seguinte trecho de código:

$(function () {
  $(‘#button’).on(‘click’function () {

})

Se você tentar fechar a função interna, o Auto-Pairs irá, na verdade, saltar para o fechamento da função externa, efetivamente “proibindo” que você feche as funções corretamente. Soluções são:

  • Fechar a função externa de novo, forçando o que era para encerrar a função externa em encerramento da função interna (depois você pode alinhar as duas novamente usando o modo visual e = em modo normal);
  • Copiar e colar o fechamento da função externa;
  • Desligar o “salto” de elementos de fechamento com :let g:AutoPairsFlyMode = 0 (e, se você realmente preferir que o salto nunca seja feito, pode adicionar esta linha no seu vimrc);
  • Desligar temporariamente o Auto-Pairs com [Alt]p em modo de inserção (usar [Alt]p novamente irá reativar o Auto-Pairs).