english version

UTAGS

1. Что это такое.  

Поиск по проекту всех мест в C/C++, Python и Perl коде, где используется та или иная функция, класс, члены/методы класса, структура, тип, константа, переменная и вообще любое слово из кода. Поиск осуществляется прямо из vim по горячей клавише, когда курсор находится на нужном слове. Работает довольно быстро, т.к. использует предварительно подготовленный индекс.

2. Как это получить.  

Для этого вам понадобится скопировать к себе на машину три файла:
utags (shell script)
find_above (shell script)
findusage.vim


Первые два файла скопируйте в любой ваш каталог, который уже находится в переменной PATH, если такового нет, то создайте его и добавьте в PATH.
Последний файл - это плагин для vim'а, скопируйте его к себе в папку $HOME/.vim/plugin/ (если такой нет, создайте!).

3. Как использовать.  

Сначала нужно сгенерировать базу слов. Делается это, например, так:
cd your_proj_path && utags -g . > .utags
Для больших проектов генерация тэгов может занять продолжительное время.

Затем, когда вы находитесь в одной из папок проекта и редактируете какой-либо файл на любом уровне вложенности, находясь на интересующем вас слове, нажмите поочереди две клавиши: <\> и <U> (нажимать нужно без долгой задержки, быстро, буква U здесь большая, т.е. нажимать с зажатым shift). Тогда vim откроет в нижнем окне список использования данного слова по всем исходникам проекта.

Есть еще пара сочетаний, которые позволяют ограничить область поиска:
<\>, <D> - поиск только по хэдерам
<\>, <P> - поиск только по текущей папке
Буквы D и P здесь тоже большие, используем Shift.

Клавиша <\> здесь определяется настройками vim'а - это клавиша <Leader>, которую можно поменять, например, на запятую добавив в $HOME/.vimrc команду:

:let mapleader = ","

4. Перемещение по списку результатов.  

По списку можно перемещаться дабл-кликом или с помощью клавиатуры (стрелочки и Enter). Перевести курсор в нижнее окно с помощью клавы - <Ctrl>+<w>, <Down>, а обратно в верхнее - <Ctrl>+<w>, <Up>.

По желанию можно добавить мапы для вима для перемещения по полученному списку. Например, такие:

map <F6> :copen<CR>
map <F7> :cprevious<CR>
map <F8> :cnext<CR>

Эти строки следует добавлять в $HOME/.vimrc

Если остались вопросы или есть предложения по улучшению данной тулзы, пишите мне на мыло: luinnar(at)yandex.ru

Have a fun!



Hosted by uCoz