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.

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.


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

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.