Поиск по проекту всех мест в C/C++, Python и Perl коде, где используется та или иная функция, класс, члены/методы класса, структура, тип, константа, переменная и вообще любое слово из кода. Поиск осуществляется прямо из vim по горячей клавише, когда курсор находится на нужном слове. Работает довольно быстро, т.к. использует предварительно подготовленный индекс.
Для этого вам понадобится
скопировать к себе на машину три
файла:
utags (shell script)
find_above (shell script)
findusage.vim
Первые два файла
скопируйте в любой ваш каталог, который
уже находится в переменной PATH, если
такового нет, то создайте его и добавьте
в PATH.
Последний файл - это плагин для
vim'а, скопируйте его к себе в папку
$HOME/.vim/plugin/ (если такой нет, создайте!).
Сначала нужно сгенерировать
базу слов. Делается это, например, так:
cd
your_proj_path && utags -g . > .utags
Для больших проектов генерация тэгов может занять продолжительное время.
Затем, когда вы находитесь в одной из папок проекта и редактируете какой-либо файл на любом уровне вложенности, находясь на интересующем вас слове, нажмите поочереди две клавиши: <\> и <U> (нажимать нужно без долгой задержки, быстро, буква U здесь большая, т.е. нажимать с зажатым shift). Тогда vim откроет в нижнем окне список использования данного слова по всем исходникам проекта.
Есть еще пара сочетаний,
которые позволяют ограничить область
поиска:
<\>, <D>
- поиск только по хэдерам
<\>,
<P> - поиск только по текущей
папке
Буквы D и P здесь тоже большие,
используем Shift.
Клавиша <\> здесь определяется настройками vim'а - это клавиша <Leader>, которую можно поменять, например, на запятую добавив в $HOME/.vimrc команду:
:let mapleader = ","
По списку можно перемещаться дабл-кликом или с помощью клавиатуры (стрелочки и 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