All Projects → ludovicchabant → Vim Gutentags

ludovicchabant / Vim Gutentags

Licence: mit
A Vim plugin that manages your tag files

Programming Languages

Vim Script
2826 projects
Batchfile
5799 projects
shell
77523 projects

Projects that are alternatives of or similar to Vim Gutentags

lh-tags
ctags base updating, and browsing from vim
Stars: ✭ 25 (-98.74%)
Mutual labels:  ctags, vim-plugins
Tig Explorer.vim
Vim plugin to use Tig as a git client. Seamless switching between vim and Tig with opening in the same buffer.
Stars: ✭ 136 (-93.12%)
Mutual labels:  vim-plugins
Vim Follow My Lead
Vim plugin for showing all your <Leader> mappings in a readable table including the descriptions.
Stars: ✭ 100 (-94.94%)
Mutual labels:  vim-plugins
Vscode Verilog Hdl Support
Verilog HDL/SystemVerilog/Bluespec SystemVerilog support for VS Code
Stars: ✭ 120 (-93.93%)
Mutual labels:  ctags
Guard Ctags Bundler
Guard gem for generating ctags for project files and gems from project's bundle.
Stars: ✭ 104 (-94.74%)
Mutual labels:  ctags
Vim Todo Lists
Vim plugin for TODO lists
Stars: ✭ 126 (-93.63%)
Mutual labels:  vim-plugins
Vim Ruby Minitest
Vim highlighting & completion for MiniTest
Stars: ✭ 97 (-95.09%)
Mutual labels:  vim-plugins
Django Plus.vim
🎸 Improvements to the handling of Django related files in Vim
Stars: ✭ 145 (-92.67%)
Mutual labels:  vim-plugins
Ale
Check syntax in Vim asynchronously and fix files, with Language Server Protocol (LSP) support
Stars: ✭ 11,380 (+475.62%)
Mutual labels:  vim-plugins
Local vimrc
Per project/tree configuration plugins
Stars: ✭ 118 (-94.03%)
Mutual labels:  vim-plugins
Leaderf
An efficient fuzzy finder that helps to locate files, buffers, mrus, gtags, etc. on the fly for both vim and neovim.
Stars: ✭ 1,733 (-12.34%)
Mutual labels:  ctags
Coverage.vim
code coverage vim plugin
Stars: ✭ 106 (-94.64%)
Mutual labels:  vim-plugins
Landscape.vim
A colorscheme for Vim
Stars: ✭ 126 (-93.63%)
Mutual labels:  vim-plugins
Vim Dasht
💁 (Neo)Vim plugin for dasht integration
Stars: ✭ 104 (-94.74%)
Mutual labels:  vim-plugins
Jupytext.vim
Vim plugin for editing Jupyter ipynb files via jupytext
Stars: ✭ 142 (-92.82%)
Mutual labels:  vim-plugins
Vim Force.com
Vim plugin for force.com
Stars: ✭ 98 (-95.04%)
Mutual labels:  vim-plugins
Dotfiles ikigai
dotfiles 🔥 includes scripts that makes my life easier!
Stars: ✭ 110 (-94.44%)
Mutual labels:  vim-plugins
Neotags.nvim
Tag highlight in neovim
Stars: ✭ 124 (-93.73%)
Mutual labels:  ctags
Vim Tidal
Vim plugin for TidalCycles
Stars: ✭ 147 (-92.56%)
Mutual labels:  vim-plugins
Wmgraphviz.vim
Vim plugin for Graphviz
Stars: ✭ 142 (-92.82%)
Mutual labels:  vim-plugins

Gutentags

Gutentags is a plugin that takes care of the much needed management of tags files in Vim. It will (re)generate tag files as you work while staying completely out of your way. It will even do its best to keep those tag files out of your way too. It has no dependencies and just works.

How?

Install Gutentags like any other Vim plugin. I recommend something like Pathogen, so you can go:

cd ~/.vim/bundle
hg clone https://bitbucket.org/ludovicchabant/vim-gutentags

If you're more into Git than Mercurial:

git clone https://github.com/ludovicchabant/vim-gutentags.git

Then you only need to do a :call pathogen#helptags() to generate the documentation tags (how ironic, eh?) and you can access Gutentags' help pages with help gutentags.

What?

In order to generate tag files, Gutentags will have to figure out what's in your project. To do this, it will locate well-known project root markers like SCM folders (.git, .hg, etc.), any custom tags you define (with gutentags_project_root), and even things you may have defined already with other plugins, like CtrlP.

If the current file you're editing is found to be in such a project, Gutentags will make sure the tag file for that project is up to date. Then, as you work in files in that project, it will partially re-generate the tag file. Every time you save, it will silently, in the background, update the tags for that file.

Usually, ctags can only append tags to an existing tag file, so Gutentags removes the tags for the current file first, to make sure the tag file is always consistent with the source code.

Also, Gutentags is clever enough to not stumble upon itself by triggering multiple ctags processes if you save files too fast, or your project is really big.

Why?

There are some similar Vim plugins out there ("vim-tags", "vim-autotag", "vim-automatic-ctags", etc.). They all fail on one or more of the requirements I set for myself with Gutentags:

  • No other dependency than running Vim: no Python, Ruby, or whatever.
  • Cross-platform: should work on at least Ubuntu, Mac, and Windows.
  • Incremental tags generation: don't re-generate the whole project all the time. This may be fine for small projects, but it doesn't scale.
  • External process management: if the ctags process is taking a long time, don't run another one because I saved a file again.
  • Keep the tag file consistent: don't just append the current file's tags to the tag file, otherwise you will still "see" tags for deleted or renamed classes and functions.
  • Automatically create the tag file: you open something from a freshly forked project, it should start indexing it automatically, just like in Sublime Text or Visual Studio or any other IDE.

I hope Gutentags will bring you as much closure as me regarding tag files. I know I don't want to have to think about it, and probably neither do you.

Related Projects

  • gutentags_plus: handles switching between cscope databases automatically before performing a search query.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].