четверг, 3 ноября 2016 г.

Навигация по PHP проекту с помощью Vim и Ctags

Ctags — это программа, генерирующая индексный файл, который содержит информацию об именах, переменных и функциях в исходном коде приложения. Этот файл позволяет текстовым редакторам, таким как Vim, осуществлять навигацию по проекту.

Установка Ctags

Мне нужно было установить Ctags на сервере OpenShift, поэтому я установил его используя исходный код. Вероятно, Ctags уже присутствует в вашей системе, или вы можете более просто установить его из пакета.

Последовательность действий для OpenShift:

#создать директорию и перейти в нее
mkdir -p ~/app-root/data/ctags && cd ~/app-root/data/ctags
#скачать Ctags
curl -sSOL http://prdownloads.sourceforge.net/ctags/ctags-5.8.tar.gz
# распаковать архив
tar zxf ctags-5.8.tar.gz
#перейти в директорию
cd ctags-5.8
#указать текущую директорию для установки
./configure --prefix=$(pwd)
#установить
make && make install
создать псевдоним
alias ctags=$(pwd)/bin/ctags
echo "alias ctags=$(pwd)/bin/ctags" >> ~/app-root/data/.bash_profile


Индексирование

1. Выполните команду ctags --help чтобы увидеть предлагаемые настройки индексирования
2. Перейдите в директорию с проектом.
3. Выполните команду
ctags \
--recurse \
--exclude=".git" \
--tag-relative=yes \
--languages=PHP \
--PHP-kinds=+cif-dv \
--regex-PHP="/abstract class ([^ ]+)/\1/c/" \
--regex-PHP="/interface ([^ ]+)/\1/c/" \
--regex-PHP="/(public |static |abstract |protected |private )+ function +([^ \(]*)/\2/f/"
4. Выполните команду :set tags+=project_folder в Vim, где project_folder - директория проекта

Навигация в Vim

Переход к тегу

  • переместите курсор на тег, или выделить текст с помощью визуального режима и нажмите <ctrl + ]>
  • выполните команду :tag <tagname> — переход к тегу, например :tag register_post_type. Здесь также работает автодополнение. Вы можете набрать :tag register_post_ и нажимать <tab> чтобы видеть список предлагаемых вариантов

Список тегов

  • переместите курсор на тег, или выделить текст с помощью визуального режима и нажмите <g]>. В появившемся окне наберите номер варианта для перехода
  • выполните команду :tselect /<шаблон>, например :tselect /register_post_ — вывести список с возможностью выбора варианта для перехода
  • :tjump /<шаблон>, например :tjump /register_post_ — перейти к тегу если он используется один раз. Если более одного раза — вывести список с возможностью выбора варианта для перехода
чтобы вернуться обратно после перехода, нажмите <ctrl+t>

Комментариев нет:

Отправить комментарий