Vim: выделить ключевые пары ключевых слов в Ruby (def/end, do/end и т.д.)
В одном из редакторов на основе Eclipse, которые я опробовал недавно (я думаю, это RubyMine), когда было выбрано ключевое слово Ruby, которое открыло или закрыло метод или блок, было выделено соответствующее ключевое слово Open/Close. Подобно тому, как Vim может выделить соответствующую скобку открытия/закрытия.
Например, если я выбрал "def", он выделит соответствующий "конец". Он также работал для do/end блоков.
Это было действительно удобно, особенно для тех длинных и иногда сильно вложенных файлов Rspec.
Кто-нибудь знает, как добиться этого в Vim?
Ответы
Ответ 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