Verwenden von% in Sprachen ohne geschweifte Klammern


17

In C- und C-ähnlichen Sprachen kann ich %zu der entsprechenden geschweiften Klammer springen, auf der sich der Cursor befindet. Dies ist ein bekannter "Trick".

Aber in Ruby zum Beispiel:

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

Dies funktioniert nicht, da Ruby die Zeichen in matchpairs( (:),{:},[:],<:>standardmäßig auf) nicht verwendet.

Ich habe versucht, das einzustellen, aber es funktioniert nicht:

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

Kann ich das auch für Sprachen wie Ruby verwenden? Beachten Sie, dass dies keine Ruby-spezifische Frage ist. Andere Beispiele sind Shell-Skripte ( if/ fi) oder Lua ( function/ end) und viele, viele mehr.

Antworten:


17

Sie können das Matchit- Plugin verwenden. Dies ist in modernen vim-Distributionen enthalten. Alles, was Sie tun müssen, um es zu verwenden, ist Folgendes zu Ihrem vimrc hinzuzufügen:

runtime macros/matchit.vim

Sie können es auch als Plugin packen lassen, wenn Sie es vorziehen. Es erkennt standardmäßig viele Schlüsselwörter (einschließlich defund end) und kann erweitert werden, um mehr zu erkennen.


1
Hinweis: Das Tippen :runtime macros/matchit.vimfunktioniert nicht. Sie müssen in Ihrem vimrc setzen und neu starten Vim ...
Martin Tournoij

Ich habe das gemacht. Funktioniert immer noch nicht bei mir :(
Thirupathi Thangavel

0

Das folgende Dokument passt, die Zusätze unten in ~ / .vimrc haben bei mir funktioniert

:runtime macros/matchit.vim
filetype plugin on

Willkommen auf der Seite! Dies ist im Grunde die gleiche Antwort wie die vorhandene, akzeptierte Antwort. Der Unterschied liegt in Ihrem filetypeBefehl: Es kann hilfreich sein, wenn Sie ausführlich beschrieben haben, warum Sie diese Zeile hinzugefügt haben und wie dies zur Beantwortung der Frage beiträgt. (Sie haben auch ein paar Tippfehler: "doc", "the the".)
Rich
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.