The Vim editor comes with a lot of powerful features. One of the very useful but lesser known feature of Vim is tag jumping. It allows you to quickly jump to the definition of an identifier and back. To achieve this, Vim takes the help of a tag file which can be generated with the help of a tool called ctags.
Ctags (AKA exuberant ctags) is tool which generates an index of tags in source code files. A tag can be any identifier like class name, function name or variable name. The index file can then be used by text editors to provide fast and easy navigation to the corresponding class, function or variable definition in your code base. Ctags already supports 41 languages and adding support for new languages is easy.
In this article we are going to see how to install it on Ubuntu and use it with Vim.
Installing ctags is straight forward. In most Linux distributions, it is available in the default repositories and can be installed using the built in package manager.
sudo apt install exuberant-ctags
Adding Support in Vim
There is actually nothing to do here. Ctags support comes built into Vim. You can read about the built in tag support in vim by running
:help tags or
Generating the tag file
Next step is to generate the tag file for your code base. From the base directory of your project, run
This will generate tags for all known source code files in your code base. The
-R flag tell ctags to recursively scan directories. Files of unknown types will be ignored. If the command executes successfully, a file named
tags will be created.
Navigating inside Vim
To navigate to a tag definition inside vim, open a source code file, place the cursor on the tag you want to find and press
Ctrl+]. To move back to the previous position, press
That’s it. Make sure to re-generate the tags whenever new classes/functions are created.