Быстрая навигация по исходникам гемов с Vim

Наиболее IDE-шная особенность Vim из мне известных — поддержка тегов. С ними смотреть исходники гемов гораздо удобнее чем с bundle open или show-source.

Нажав Ctrl+] переходим на класс / метод под курсором. Нажав Ctrl+t возвращаемся обратно.

Полезно для классов большого проекта и самое главное — его гемов. Можно из своего контроллера перейти на ActionController::Base, а оттуда закопаться ещё дальше в Рельсы открыв ActiveSupport::Autoload. И снова вернуться обратно в свой проект нажав Ctrl+t два раза.

Ctags #

Для Arch установите пакет universal-ctags-git.

Меня интересует только Ruby, поэтому глобальные настройки выглядят так:

vim ~/.ctags
--recurse=yes
--tag-relative=yes
--exclude=.git
--exclude=log
--exclude=tmp
--exclude=doc
--exclude=deps
--exclude=node_modules
--exclude=public/assets
--languages=ruby

Проверить что все работает можно запустив в корне проекта:

ctags . $(bundle list --paths) 

Это команда создает теги для текущей директории и всех гемов проекта.

Vim #

Уже умеет работать со сгенерированными тегами, из коробки. Но основная проблема поддерживать их актуальными, я решил генерировать их в фоне при каждом сохранении Ruby файла.

Это можно сделать добавив в .vimrc такой блок:

if executable('ctags')
  " Generating ctags for project files and gems from project's bundle
  au BufWritePost *.rb silent! !(cd $(git rev-parse --show-toplevel) && ctags . $(bundle show --paths)) &
endif

Я честно пытался найти плагин для этого, потратил четыре часа, но они либо не работают, либо тянут много странного.

Команда выше определяет корень проекта через git, переходит в него и генерирует теги.

Добавить комментарий