Использование% в языках без фигурных скобок


17

В C и C-подобных языках я могу использовать, %чтобы перейти к соответствующей фигурной скобке, на которой находится курсор. Это всем известный трюк.

Но в Ruby например:

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

Это не работает, так как ruby ​​не использует символы в matchpairs(установлено (:),{:},[:],<:>по умолчанию.

Я попытался установить это, но это не работает:

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

Можно ли заставить это работать с такими языками, как Ruby? Обратите внимание, что это не специфичный для Ruby вопрос, другими примерами могут быть сценарии оболочки ( if/ fi) или Lua ( function/ end) и многие другие.

Ответы:


17

Вы можете использовать плагин matchit . Это включено в современные дистрибутивы vim, поэтому все, что вам нужно сделать, чтобы использовать его, это добавить следующее в ваш vimrc:

runtime macros/matchit.vim

Вы также можете получить его как плагин, если хотите. Он распознает много ключевых слов по умолчанию (включая defи end) и может быть расширен для распознавания большего количества.


1
Примечание: набор текста :runtime macros/matchit.vimне работает; вам нужно вставить в свой vimrc и перезапустить Vim ...
Мартин Турной

Я это сделал. Все еще не работает для меня :(
Thirupathi Thangavel

0

Следующее соответствие документа, дополнения ниже в ~ / .vimrc работали для меня

:runtime macros/matchit.vim
filetype plugin on

Добро пожаловать на сайт! Это в основном тот же ответ, что и существующий, принятый ответ. Разница заключается в вашей filetypeкоманде: было бы полезно, если бы вы подробно описали, почему вы добавили эту строку и как она помогает ответить на вопрос. (У вас также есть пара опечаток: «док», «the».)
Рич
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.