vim-go alternatives and similar packages
Based on the "Editor Plugins" category.
Alternatively, view vim-go alternatives based on common mentions on social networks and blogs.
-
Go for Visual Studio Code
An extension for VS Code which provides support for the Go language. -
go-lang-idea-plugin
Google Go language IDE built using the IntelliJ Platform -
GoSublime
A Golang plugin collection for SublimeText 3, providing code completion and other IDE-like features. -
coc-go language server extension for Vim/Neovim
Go language server extension using gopls for coc.nvim. -
goimports-reviser
Right imports sorting & code formatting tool (goimports alternative) -
Watch
Watches for changes in a directory tree and reruns a command in an acme win or just on the terminal. -
Local Golang playground
GNU/Emacs mode that setup local Go playground for code snippets like play.golang.org or even better :) -
Go Doc
An Microsoft Visual Code extension for Golang to print symbol definition to output -
goprofiling
This extension adds benchmark profiling support for the Go language to VS Code.
Static code analysis for 29 languages.
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of vim-go or a related project?
README
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
. - Call
staticcheck
with:GoMetaLinter
to invoke all possible linters (e.g.golint
,vet
,errcheck
,deadcode
, etc.) and put the result in the quickfix or location list. - Lint your code with
:GoLint
, run your code through:GoVet
to catch static errors, or make sure errors are checked with:GoErrCheck
. - Advanced source analysis tools utilizing
guru
, such as:GoImplements
,:GoCallees
, and:GoReferrers
. - ... and many more! Please see [doc/vim-go.txt](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
viagotags
. - Integration with
Ultisnips
and other snippet engines.
Install
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 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](doc/vim-go.txt) for more
detailed instructions (:help go-install
).
Usage
The full documentation can be found at [doc/vim-go.txt](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. :GoReportGitHubIssue
can be used pre-populate a lot
of the information needed when creating a new issue.
Contributing
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 make
. 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.
License
The BSD 3-Clause License - see [LICENSE
](LICENSE) for more details
*Note that all licence references and agreements mentioned in the vim-go README section above
are relevant to that project's source code only.