Usando% en idiomas sin llaves


17

En los lenguajes C y C, puedo usar %para saltar a la llave correspondiente en la que está el cursor. Este es un conocido "truco".

Pero en Ruby, por ejemplo:

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

Esto no funciona, ya que ruby ​​no usa los caracteres en matchpairs(configurado (:),{:},[:],<:>de forma predeterminada.

Intenté configurar eso, pero no funciona:

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

¿Puedo hacer que esto funcione con idiomas como Ruby también? Tenga en cuenta que esta no es una pregunta específica de Ruby, otros ejemplos pueden ser scripts de shell ( if/ fi) o Lua ( function/ end), y muchos más.

Respuestas:


17

Puedes usar el complemento matchit . Esto se incluye en las distribuciones de vim modernas, por lo que todo lo que tiene que hacer para usarlo es agregar lo siguiente a su vimrc:

runtime macros/matchit.vim

También puede empaquetarlo como un complemento si lo prefiere. Reconoce muchas palabras clave por defecto (incluyendo defy end) y se puede ampliar para reconocer más.


1
Nota: escribir :runtime macros/matchit.vimno funciona; necesita poner en su vimrc y reiniciar Vim ...
Martin Tournoij

Yo lo hice. Todavía no funciona para mí :(
Thirupathi Thangavel

0

El siguiente doc matchit, las adiciones a continuación en ~ / .vimrc me funcionaron

:runtime macros/matchit.vim
filetype plugin on

Bienvenido al sitio! Esta es básicamente la misma respuesta que la respuesta aceptada existente. La diferencia es su filetypecomando: puede ser útil si describe en detalle por qué ha agregado esta línea y cómo ayuda a responder la pregunta. (También tienes un par de errores tipográficos: "doc", "the the".)
Rico
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.