Usando% em idiomas sem chaves

17

Nas linguagens C e C, eu posso usar %para pular para a chave correspondente em que o cursor está. Este é um "truque" bem conhecido.

Mas em Ruby, por exemplo:

def fun
    [1, 2].each do |n|
    end
end 

Isso não funciona, pois o ruby ​​não usa os caracteres em matchpairs(definido como (:),{:},[:],<:>padrão.

Eu tentei definir isso, mas não funciona:

:set matchpairs=def:end
E474: Invalid argument: matchpairs=def:end

Posso fazer isso funcionar com idiomas como Ruby também? Observe que essa não é uma pergunta específica do Ruby, outros exemplos podem ser scripts de shell ( if/ fi) ou Lua ( function/ end) e muitos mais.

Martin Tournoij
fonte

Respostas:

17

Você pode usar o plugin matchit . Isso está incluído nas distribuições modernas do vim, então tudo que você precisa fazer para usá-lo é adicionar o seguinte ao seu vimrc:

runtime macros/matchit.vim

Você também pode empacotá-lo como um plugin, se preferir. Ele reconhece muitas palavras-chave por padrão (incluindo defe end) e pode ser estendido para reconhecer mais.

xthrd
fonte
1
Nota: a digitação :runtime macros/matchit.vimnão funciona; você precisa colocar em em seu vimrc e reiniciar Vim ...
Martin Tournoij
Eu fiz isso. Ainda não funciona para mim :(
Thirupathi Thangavel
0

O seguinte documento corresponde, as adições abaixo em ~ / .vimrc funcionaram para mim

:runtime macros/matchit.vim
filetype plugin on
John
fonte
Bem vindo ao site! Esta é basicamente a mesma resposta que a resposta existente aceita. A diferença é seu filetypecomando: pode ser útil se você descreveu em detalhes por que você adicionou esta linha e como ela ajuda a responder à pergunta. (Você também tem alguns erros de digitação: "doc", "the the".)
Rich