Подтвердить что ты не робот

Vim: выделить ключевые пары ключевых слов в Ruby (def/end, do/end и т.д.)

В одном из редакторов на основе Eclipse, которые я опробовал недавно (я думаю, это RubyMine), когда было выбрано ключевое слово Ruby, которое открыло или закрыло метод или блок, было выделено соответствующее ключевое слово Open/Close. Подобно тому, как Vim может выделить соответствующую скобку открытия/закрытия.

Например, если я выбрал "def", он выделит соответствующий "конец". Он также работал для do/end блоков.

Это было действительно удобно, особенно для тех длинных и иногда сильно вложенных файлов Rspec.

Кто-нибудь знает, как добиться этого в Vim?

4b9b3361

Ответ 1

Если вы используете Vim 7.3, вы должны иметь MatchIt vim macro.

Добавьте runtime macros/matchit.vim в ваш файл .vimrc, и вы сможете использовать% для соответствия блокам ruby.

Вы можете посмотреть плагин filetype для ruby, чтобы увидеть, что он будет перемещать между.

Ответ 2

VIM (до 7.2) не может выделить закрывающие пары "if/end", потому что параметры соответствия принимают один символ (см.: help matchpairs). Вместо этого я рекомендую использовать фальцовку, если вы точно отпечатаете свой код:

:set foldmethod=indent

Затем используйте: zc, za, чтобы убедиться, что вы находитесь в правильном блоке.

Ответ 3

Похоже, что этот vim-плагин выполняет сопоставление подбора: http://vimdoc.sourceforge.net/htmldoc/pi_paren.html вы, вероятно, могли бы вникнуть в этот код, чтобы увидеть, как его расширить, чтобы сопоставить другие вещи.

Ответ 4

Я нашел этот плагин при поиске ответа по той же проблеме, что и для базового кода ruby, но я не тестировал его для Rspec и т.д.

Просто установите его через pathogen и добавьте let g:hl_matchit_enable_on_vim_startup = 1

https://github.com/vimtaku/hl_matchit.vim