vim-gutentags VS coc.nvim

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

vim-gutentags

A Vim plugin that manages your tag files (by ludovicchabant)

coc.nvim

Nodejs extension host for vim & neovim, load extensions like VSCode and host language servers. (by neoclide)
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 coc.nvim
18 320
2,254 23,920
- 0.6%
1.3 9.0
about 1 month ago 8 days ago
Vim Script TypeScript
MIT License GNU General Public License v3.0 or later
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.

coc.nvim

Posts with mentions or reviews of coc.nvim. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-04-21.
  • I can't stand using VSCode so I wrote my own (it wasn't easy)
    10 projects | news.ycombinator.com | 21 Apr 2024
    As well as its own plugins Vim/NeoVim can use VSCode's LSPs, DAPs and extensions either directly or via plugins like CoC[1] and Mason[2].

    I would be surprised if emacs couldn't do the same.

    1. https://github.com/neoclide/coc.nvim

  • Existing non-lua plugins examples
    8 projects | /r/neovim | 6 Dec 2023
    The most famous TypeScript one probably is coc.nvim
  • ready to use neovim for web development (frontend) - beginners
    4 projects | /r/neovim | 5 Dec 2023
    It is flatly the wrong mindset to think of vim as an IDE. vim is a code editor: get in, make change, get out. Consider vim koans, which are a fun little read. You can throw coc.nvim at Neovim, along with a few other bits to give you a Good Enough setup, but vim isn't and will never be an IDE.
  • Using CoC inlay hints
    1 project | /r/vim | 11 Nov 2023
    I just did a fresh reinstall of CoC, on a newer version of Neovim. I'm now seeing something I hadn't seen before, which CoC calls "inlay hints". They look like this:
  • C# lsp configuration with neovim CoC
    4 projects | /r/neovim | 10 Nov 2023
    I'm currently on an old setup (using coc and polyglot) and nvim v0.6.1. I'll be updating to a more modern setup within next year, using the native lsp and building nvim more frequently. But that's not today.
  • Does anyone know some good altermatives for these Vim plugins on Emacs?
    3 projects | /r/emacs | 18 Jul 2023
    coc.nvim
  • LazyVim
    32 projects | news.ycombinator.com | 16 Jul 2023
    There are some plugins which have the best documentations I have ever seen, but you need to read it from the Vim.

    Example of coc.nvim: https://github.com/neoclide/coc.nvim/blob/master/doc/coc.txt

  • Resources on learning bash scripting
    5 projects | /r/bash | 4 Jul 2023
    Actually you can with coc.nvim & coc-sh. So long as shellcheck is also installed and in PATH, it'll integrate with coc/vim just fine.
  • how to set up coc.nvim extension on offline machine?
    2 projects | /r/vim | 7 Jun 2023
    When you install an extension it runs an npm install or yarn, iirc, which is going to be problematic for you being offline. I was going to say you could copy that ~/.config/coc folder directly to the other machine but yeah, Windows, no idea. You see here https://github.com/neoclide/coc.nvim/wiki/Using-coc-extensions
  • GCC autocompletion
    2 projects | /r/vim | 30 May 2023
    You can try https://github.com/neoclide/coc.nvim, the pre-requisite is to install nodeJS, then to install all the languages LSP. This works for me for Angular, Rust, JavaScript, Vimscript, etc

What are some alternatives?

When comparing vim-gutentags and coc.nvim you can also consider the following projects:

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

YouCompleteMe - A code-completion engine for Vim

ctags - A maintained ctags implementation

vim-lsp - async language server protocol plugin for vim and neovim

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

nvim-treesitter - Nvim Treesitter configurations and abstraction layer

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

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

nvim-lspconfig - Quickstart configs for Nvim LSP

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

LunarVim - 🌙 LunarVim is an IDE layer for Neovim. Completely free and community driven.