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.

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.


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

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.