Apple seems to have decided that tags for the Mac didn't need changes, with no improvements coming in macOS Catalina. Yet, when you know how to use what we've already got, tags can become a superb. Luckily for us, Mac OS X comes with ctags installed by default but unfortunately for us, this version (despite what the documentation says) doesn’t support Objective-C. We’ll have to use Homebrew to install a newer version. Start by executing the following to install the latest and greatest version of ctags: $ brew install ctags -HEAD. Install ctags, Create tags, Browse in Vim In this post, an experienced developer demonstrates how to install ctags on Ubuntu 16.04.3, create tags, and browse the code in vim.
Today I learned
Ctags is not always the best solution to this today. There are Language Server implementations for some modern languages that would offer these features and more. Also, as of 2019, there are other ctags alternatives to consider today, such as Universal Ctags.
Ctags lets you navigate code fast, and is perhaps the single most useful productivity boosting tool in any developer's arsenal. If you're not using Ctags yet, let's get you started.
What's it for?
Ctags indexes a project's tags, or names of its classes and methods. Coupled with some integration with your editor (shown: Vim's unite-tag), it will give you two interesting features to help you traverse code base:
Installing Ctags
Exuberant Ctags
In OS X, use Homebrew to install Exuberant Ctags. This is a more useful version of ctags than the one that ships with Xcode.
Ctags options
Ctags For Mac Free
Let's make ctags ignore some common directories. Save this file as
~/.ctags
. Syslog server.Generate ctags for a project
Ctags For Mac Download
Go to your project's path, and run ctags to generate a
tags
file in your project. This is the index of all tags in your project that your editor will use.Ignore all ctags files
Ctags Mac Os Install
Ctags Gtags
It's safe to make all projects ignore all files called
tags
. I recommend setting up a global git ignore list.Vim setup
Auto-update ctags files
Use vim-autotag to automatically update
tags
files. This will only work on projects that have already had ctags -R
performed before.Jumping to tags
Use
:tag
to go to the definition of a certain tag. Usually, you will want to use this to jump to a certain Class or Method. Yes, this supports tab completion!From the command line
Use
vim -t
to open vim to a certain tag.Navigating through multiple definition
If you used
:tag
on a tag that's got multiple definitions, use these commands to sift through them all.Shortcut | Definition |
---|---|
:tn | Move to next definition (:tnext ) |
:tp | Move to previous definition (:tprevious ) |
:ts | List all definitions (:tselect ) |
Key shortcuts
You can also place your cursor on some text and press
^]
Gateway lp2407 driver for mac. to jump to that tag.Shortcut | Definition |
---|---|
^] | Jump to definition |
^t | Jump back from definition |
^W } | Preview definition |
g] | See all definitions |
Unite integration
If you're using unite.vim, you can use unite-tag to browse tags. You can also check out my plugin, vim-fastunite, which offers a pre-packaged distribution of Unite.vim.
Futher reading
- Browsing programs with tags (vim.wikia.com)
You have just read Navigate code like a pro with Ctags, written on April 22, 2015. This is Today I Learned, a collection of random tidbits I've learned through my day-to-day web development work. I'm Rico Sta. Cruz, @rstacruz on GitHub (and Twitter!).