русская версия

UTAGS

1. What it is.

Utags provides an ability to search for usage of a C/C++/Python/Perl function, a type name, a class method/member, a variable or any other word in a source code of a project. It's like a fast, convenient grep by the whole word. Search is performed from vim by a hot-key when cursor is on the word you want to find. It works quickly since utags uses a beforehand generated index.

2. How to get it.

You should copy the following files on your machine:

utags (shell script)
find_above (shell script)
findusage.vim

Copy the first two files into any your folder which is already in the $PATH, or if there is no such folder, then create one and add it to the $PATH.

The last file (findusage.vim) – is a plugin for vim, copy it into the folder $HOME/.vim/plugin/ (if this directory doesn't exist create it!).

3. How to use it.

First of all you should generate an index. It's done by the following command:

cd your_proj_path && utags -g . > .utags

It can take a while for big projects.

Further when you edit a file from the project and current folder is a project subfolder and the vim cursor is on the word you want to find in the project, press and release one by one two keys: <\> and <U> (without delay between pressing, quite quickly; letter U is in uppercase here, so press it holding Shift). If you have done everything right, vim opens a window in the top with a list of results.

A couple of other hot-keys limit the search area:

<\>, <D> - search only in the C/C++ headers.
<\>, <P> - search only in the current directory.
Letters D and P are in upper case here too, so press them with Shift held.

Key <\> is defined by vim configuration and can be changed, for example, on a comma by adding the following line into $HOME/.vimrc:

let mapleader = ","

4. Going though results.

You may select items from the result list using mouse double-click or using a keyboard (arrows and Enter). In order to move vim cursor in the bottom window using keyboard press <Ctrl>+<w>, <Down>, and to return to the top window: <Ctrl>+<w>, <Up>.

You also may assign hot-keys to go thru the result list faster:

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

These lines should be added to $HOME/.vimrc

If you have any question about this tool or know how to enhance it, please email me at luinnar(at)yandex.ru

Have a fun!



Hosted by uCoz