fatih / vim-go
git clone https://github.com/fatih/vim-go.git
v1.29 · 1y ago
🔥 on GitHub Trending today
Go development plugin for Vim
+0
stars, 24h · #15,388
+~0
stars, 7 days · #15,920
+11
stars, 30 days · #22,189
16k
★ total
1.4k
forks · 28 open issues
Star history (as recorded here)
LanguageVim Script
License—
Created2014-03-24 (12y ago)
Last push2mo ago
Watchers252
OwnerUser
Seen on GitHub Trending
- 2026-10-22 — #17 monthly in vim-script · +10 ★
- 2026-10-21 — #16 monthly in vim-script · +10 ★
- 2026-10-20 — #16 monthly in vim-script · +11 ★
GitHub topics
Links
- GitHub: github.com/fatih/vim-go
- Homepage: https://www.patreon.com/bhcleek
- Releases · Issues · Hacker News mentions
README excerpt
# vim-go
## Features
This plugin adds Go language support for Vim, with the following main features:
* Compile your package with `:GoBuild`, install it with `:GoInstall` or test it
with `:GoTest`. Run a single test with `:GoTestFunc`).
* Quickly execute your current file(s) with `:GoRun`.
* Improved syntax highlighting and folding.
* Debug programs with integrated `delve` support with `:GoDebugStart`.
* Completion and many other features support via `gopls`.
* formatting on save keeps the cursor position and undo history.
* Go to symbol/declaration with `:GoDef`.
* Look up documentation with `:GoDoc` or `:GoDocBrowser`.
* Easily import packages via `:GoImport`, remove them via `:GoDrop`.
* Precise type-safe renaming of identifiers with `:GoRename`.
* See which code is covered by tests with `:GoCoverage`.
* Add or remove tags on struct fields with `:GoAddTags` and `:GoRemoveTags`.
* Lint your code with `:GoLint` or `:GoMetaLinter`, run your code through `:GoVet` to catch static errors, or make sure errors are checked with `:GoErrCheck`.
* Advanced source analysis utilizing `gopls`, such as `:GoImplements`, `:GoCallees`, and `:GoReferrers`.
* ... and many more! Please see doc/vim-go.txt for more information.
* Integration with `gopls`.
* The `gopls` instance can be shared with other Vim plugins.
* Vim-go's use of `gopls` can be disabled and alternative tools can be used when desired.
* Integration with `Tagbar` via `gotags`.
* Integration with `Ultisnips` and other snippet engines.
## Install
vim-go requires at least Vim 8.2.5072 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 https://github.com/fatih/vim-go.git ~/.vim/pack/plugins/start/vim-go`
* Neovim packages
* `git clone https://github.com/fatih/vim-go.git ~/.local/share/nvim/site/pack/plugins/start/vim-go`
* Pathogen
* `git clone https://github.com/fatih/vim-go.git ~/.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, `:GoInstallBinaries`, which will
`go install` all the required binaries.
Check out the Install section in the documentation for more
detailed instructions (`:help go-install`).
## Usage
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-troubleshooti