Vim & ctags: общие ctags во всех проектах? - PullRequest
1 голос
/ 25 марта 2012

Я только знакомлюсь с функциональностью Vag's CTags - и это чертовски удобно.

Однако у меня есть одна проблема - создание общих тегов для каждого проекта.

Например - я делаю немало работы в рельсах, и мне нравится генерировать ctags для всей структуры рельсов с помощью

alias rctags="ctags -R `bundle show rails`/../*"

Проблема в том, что я должен делать это для каждого запускаемого мной рельсового проекта.

Итак, каков стандартный способ автоматического доступа к набору тегов в любом сеансе vim - в идеале , только если открытый файл удовлетворяет определенному условию. (Например, предварительно загруженные ctags для файлов .rb, но не для файлов .py)

Любые идеи приветствуются

Ответы [ 2 ]

2 голосов
/ 27 марта 2012

Почему бы не использовать плагин Indexer , созданный специально для управления ctags в Vim?

Вы можете определить свой проект в ~/.indexer_files следующим образом:

[my_rails_project]
/path/to/the/needed/directory

или даже

[my_rails_project]
option:ctags_params = "--languages=Ruby"
/path/to/the/needed/directory

Затем каждый раз, когда вы открываете файл Ruby (например, *.rb или *.ruby) из каталога /path/to/the/needed/directory (конечно, с подкаталогами), ваши теги будут автоматически генерироваться в фоновом процессе, а также при сохранении любого файла. из этого проекта теги тоже будут обновляться автоматически (опять же в фоновом режиме).

Итак, вам не нужно заботиться о генерации тегов, это просто работает.

Для получения дополнительной информации см. Статью: Vim: удобная навигация по коду для ваших проектов , в которой подробно объясняется использование Indexer + Vimprj.

2 голосов
/ 25 марта 2012

См. :help 'tags'.

Вы можете использовать, например:

set tags+=~/.rails-tags

, что приведет к поиску тегов ~/.rails-tags.

(такжепо теме тегов: вероятно, полезно добавить суффикс к переменной tags к ;/. Это означает «поиск файла тегов в каждом родительском элементе рабочего каталога (например, во всех файлах /foo/bar/tags, /foo/tags»).и будет произведен поиск /tags. Например, я использую: set tags=tags;/).

...