Utilisation de% dans les langues sans accolades

17

Dans les langages C et C, je peux utiliser %pour passer à l'accolade bouclée correspondante sur laquelle se trouve le curseur. C'est un "truc" bien connu.

Mais en Ruby par exemple:

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

Cela ne fonctionne pas, car ruby ​​n'utilise pas les caractères dans matchpairs(défini (:),{:},[:],<:>par défaut.

J'ai essayé de régler cela, mais cela ne fonctionne pas:

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

Puis-je faire en sorte que cela fonctionne également avec des langues telles que Ruby? Notez que ce n'est pas une question spécifique à Ruby, d'autres exemples peuvent être des scripts shell ( if/ fi) ou Lua ( function/ end), et bien d'autres.

Martin Tournoij
la source

Réponses:

17

Vous pouvez utiliser le plugin matchit . Ceci est inclus dans les distributions modernes de vim, donc tout ce que vous avez à faire pour l'utiliser est d'ajouter ce qui suit à votre vimrc:

runtime macros/matchit.vim

Vous pouvez également le faire emballer sous forme de plugin si vous préférez. Il reconnaît de nombreux mots clés par défaut (y compris defet end) et peut être étendu pour en reconnaître davantage.

xthrd
la source
1
Remarque: la saisie :runtime macros/matchit.vimne fonctionne pas; vous devez mettre dans votre vimrc et redémarrer Vim ...
Martin Tournoij
Je l'ai fait. Ne fonctionne toujours pas pour moi :(
Thirupathi Thangavel
0

La correspondance de doc suivante, les ajouts ci-dessous dans ~ / .vimrc ont fonctionné pour moi

:runtime macros/matchit.vim
filetype plugin on
John
la source
Bienvenue sur le site! Il s'agit essentiellement de la même réponse que la réponse existante et acceptée. La différence est votre filetypecommande: il pourrait être utile de décrire en détail pourquoi vous avez ajouté cette ligne et comment elle aide à répondre à la question. (Vous avez également quelques fautes de frappe: "doc", "the the".)
Rich