vim-gutentags VS ctags

Compare vim-gutentags vs ctags and see what are their differences.

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
vim-gutentags ctags
18 33
2,254 6,273
- 1.6%
1.3 9.7
about 1 month ago 5 days ago
Vim Script C
MIT License GNU General Public License v3.0 only
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

vim-gutentags

Posts with mentions or reviews of vim-gutentags. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2022-10-25.
  • Vim + Ctags + Modern JS
    1 project | /r/vim | 14 Apr 2023
    https://github.com/ludovicchabant/vim-gutentags/issues/139 has some background.
  • Rust setup for neovim
    2 projects | /r/rust | 25 Oct 2022
    Hi everyone. I'm looking to have a better setup for Rust in neovim. I do have rust-analyzer installed for useful lsp things but I was hoping to get tags working for it as well. I was using vim-gutentags (https://github.com/ludovicchabant/vim-gutentags) for navigating useful functions and stuff but couldn't quite get it to work for rust. Is there a simple way to do it or do I need rusty-tags and some aucommand to get it to work?
  • Project & File navigation
    20 projects | /r/vim | 4 Oct 2022
    use tags, I like https://github.com/ludovicchabant/vim-gutentags for this. I might use my local .vimrc to tweak the config (exclude compiled source files and other uninteresting things)
  • Whenever I'm looking for plugins these days [OC]
    29 projects | /r/neovim | 7 Jul 2022
  • Big game changers you wish you knew about earlier
    6 projects | /r/vim | 14 Jun 2022
    guttentag: https://github.com/ludovicchabant/vim-gutentags
  • Having trouble with ctags
    3 projects | /r/vim | 5 Jun 2022
    Without more information, it's hard to point you in the right direction. The tags file could be out-of-date, in which case you can try to re-generate it (vim-gutentags for tags auto-generation). You could have 2 function declarations with the same name, in which case you can try :tag to cycle through tags (supports partials, like :tag F which will suggest FOO, FAR, FAB ...etc) or :tag to see a list of possible options (supports partials, like :tag F which will list FOO, FAR, FAB, ...etc) for various matching tags you can jump to (fzf.vim provides a tags fuzzy finder via :Tags). Maybe you're experiencing :h tag-priority?
  • What are your must-have vim/nvim extensions?
    53 projects | /r/vim | 9 May 2022
    ludovicchabant/vim-gutentags - Tags
  • Vim – Minimal Setup Explained
    8 projects | news.ycombinator.com | 24 Feb 2022
    You can then use :cnext and :cprev (or focusing the window and selecting an entry) to navigate between them.

    As others have stated, you can also use ctags (plugins like https://github.com/ludovicchabant/vim-gutentags are useful for refreshing tags in a project), but for some languages you may need to add a tag definition (e.g. for something like rust or zig). For older languages like C you should be fine.

  • How to set up VIM for PHP development
    8 projects | dev.to | 14 Feb 2022
  • Can you add custom functionality for goto definition for lsp to use multiple langauges?
    3 projects | /r/neovim | 30 Jan 2022
    Not sure if it will help in this case, but I also depend on ctags for when the lsp fails (e.g. code it doesn't compile for some reason). Here you let a program create a tags file, e.g. I use https://github.com/universal-ctags/ctags (it seems it can parse json files, though I'm not sure what kind of tags are generated from this and if they will be useful to you) with https://github.com/ludovicchabant/vim-gutentags to update the tags file. The tags file just contains symbol names with locations where they are defined, and vim has builtin functionality to use these tags files :h tag and they (can) work filetype independent. For example if I mention a C type in a markdown document I can just use ctrl-[ to jump to its definition in the C source file. Possibly you can generate tags files yourself from the json files to help with this, the tags file format is not very complicated. Tags also are not very intelligent and depend on unique names for them to work well, there is the :h g_CTRL-] that can help, but for symbols that are very common (e.g. init or something that potentially has like 20+ definitions) it doesn't really work.

ctags

Posts with mentions or reviews of ctags. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-07-04.
  • If you owned a nvidia tesla a100, what would you do with it?
    2 projects | /r/LocalLLaMA | 4 Jul 2023
  • NeoVim & Rust
    7 projects | /r/rust | 26 May 2023
    I also recommend you https://github.com/preservim/tagbar with https://ctags.io/ installed , it will map definitions (functions, enum, struct etc..) to tags and tagbar plugin allows you to open a split window with the mapped list and navigate through your file, it also enabled more advanced features for quick navigation .
  • How do you figure out which #include a function/variable came from?
    2 projects | /r/C_Programming | 3 May 2023
    grep, Ctags, Cscope, LSP
  • Vim plugin like vscode "go to definition" function
    4 projects | /r/vim | 13 Mar 2023
    Vim has the tag feature built-in, which allows it to jump to the tags that were found by a tool like universal ctags using :h CTRL-]. See :help tags for more information on this. Fun fact: this is the approach that Vim uses when you use :help!
  • Neovim config from scratch (Part II)
    10 projects | dev.to | 11 Jan 2023
    Requirements: You need to have a CTags implementation like universal-ctags installed on your system (on every system where you use vim).
  • How to check the memory usage of my plugins?
    1 project | /r/neovim | 11 Jan 2023
    Install https://github.com/universal-ctags/ctags
  • Project reading tools
    4 projects | /r/golang | 8 Dec 2022
    If you are heavy Vim user, you do not need anything else. For just quick browsing, simply use ctags, make sure to use universal ctags (https://ctags.io) not exuberant ctags which are no longer well maintained. Go works out of box.
  • Help me set up vim for linting and a file tree please and some other stuff
    7 projects | /r/vim | 7 Oct 2022
    Other (built-in) tools for file navigation in Vim include: :h :ls and :h :buffer to navigate in your buffer list (i.e. the files you have loaded); everything listed in [https://vimways.org/2018/death-by-a-thousand-files/](romainl's "Death by a Thousand Files" articles in vimways); using tags by installing universal-ctags to generate the tags then using any of the commands in :h tag to navigate them; setting global marks to files you use often with m[UPPERCASE LETTER] and jumping to them with `[UPPERCASE LETTER]; :h :vimgrep…
  • Ctags and referencing static functions, is it possible?
    1 project | /r/C_Programming | 22 Sep 2022
    I have good news for you. Universal Ctags, an Exuberant Ctags fork and essentially its replacement, has fixed this already:
  • Searching files or words using fuzzy finders
    1 project | /r/vim | 19 Jul 2022
    Vim has built-in functionality that works pretty similar to what you want. If you have a tags file (for example, using universal ctags), you can hit Ctrl-] (:h Ctrl-]) to jump to the declaration of any function under your cursor. Or, if you don't have a tags file, you can use gd (:h gd) to jump to a local declaration within the open file.

What are some alternatives?

When comparing vim-gutentags and ctags you can also consider the following projects:

tagbar - Vim plugin that displays tags in a window, ordered by scope

lsp-mode - Emacs client/library for the Language Server Protocol

nvim-cmp - A completion plugin for neovim coded in Lua.

vscode-intelephense - PHP intellisense for Visual Studio Code

coc.nvim - Nodejs extension host for vim & neovim, load extensions like VSCode and host language servers.

lsp - Language Server Protocol (LSP) plugin for Vim9

vista.vim - :cactus: Viewer & Finder for LSP symbols and tags

nvim-lspconfig - Quickstart configs for Nvim LSP

nvim-bqf - Better quickfix window in Neovim, polish old quickfix window.

cmp-nvim-tags - tags sources for nvim-cmp

fzf.vim - fzf :heart: vim