Need help with vim-go?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

13.9K Stars 1.4K Forks Other 4.2K Commits 26 Opened issues


Go development plugin for Vim

Services available


Need anything else?

Contributors list

vim-go GitHub Actions Status

Vim-go logo


This plugin adds Go language support for Vim, with the following main features:

  • Compile your package with
    , install it with
    or test it with
    . Run a single test with
  • Quickly execute your current file(s) with
  • Improved syntax highlighting and folding.
  • Debug programs with integrated
    support with
  • Completion and many other features support via
  • formatting on save keeps the cursor position and undo history.
  • Go to symbol/declaration with
  • Look up documentation with
  • Easily import packages via
    , remove them via
  • Precise type-safe renaming of identifiers with
  • See which code is covered by tests with
  • Add or remove tags on struct fields with
  • Call
    to invoke all possible linters (
    , etc.) and put the result in the quickfix or location list.
  • Lint your code with
    , run your code through
    to catch static errors, or make sure errors are checked with
  • Advanced source analysis tools utilizing
    , such as
    , and
  • ... and many more! Please see doc/vim-go.txt for more information.
  • Integration with
  • The
    instance can be shared with other Vim plugins.
  • Vim-go's use of
    can be disabled and alternative tools can be used when desired.
  • Integration with
  • Integration with
    and other snippet engines.


vim-go requires at least Vim 8.0.1453 or Neovim 0.4.0.

The latest stable release is the recommended version to use. If you choose to use the master branch instead, please do so with caution; it is a development branch.

vim-go follows the standard runtime path structure. Below are some helper lines for popular package managers:

  • Vim 8 packages
    • git clone ~/.vim/pack/plugins/start/vim-go
  • Neovim packages
    • git clone ~/.local/share/nvim/site/pack/plugins/start/vim-go
  • Pathogen
    • git clone ~/.vim/bundle/vim-go
  • vim-plug
    • Plug 'fatih/vim-go', { 'do': ':GoUpdateBinaries' }
  • Vundle
    • Plugin 'fatih/vim-go'

You will also need to install all the necessary binaries. vim-go makes it easy to install all of them by providing a command,

, which will
go get
all the required binaries.

Check out the Install section in the documentation for more detailed instructions (

:help go-install


The full documentation can be found at doc/vim-go.txt. You can display it from within Vim with

:help vim-go

Depending on your installation method, you may have to generate the plugin's

help tags
manually (e.g.

:helptags ALL

We also have a tutorial in the official vim-go wiki.

FAQ and troubleshooting

The FAQ and troubleshooting tips are in the documentation and can be quickly accessed using

:help go-troubleshooting
. If you believe you've found a bug or shortcoming in vim-go that is neither addressed by help nor in existing issues, please open an issue with clear reproduction steps.
can be used pre-populate a lot of the information needed when creating a new issue.


All PRs are welcome. If you are planning to contribute a large patch or to integrate a new tool, please create an issue first to get any upfront questions or design decisions out of the way first.

You can run the tests locally by running

. It will lint the VimL for you, lint the documentation, and run the tests against the minimum required version of Vim, other versions of Vim that may be critical to support, and Neovim.


The BSD 3-Clause License - see

for more details

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.