2017-06-14 13:41:14 -06:00
<!-- {
"Title": "Editor plugins and IDEs",
"Template": true
}-->
< h2 id = "introduction" > Introduction< / h2 >
< p >
This document lists commonly used editor plugins and IDEs from the Go ecosystem
2017-07-20 19:16:03 -06:00
that make Go development more productive and seamless.
A comprehensive list of editor support and IDEs for Go development is available at
2017-06-14 13:41:14 -06:00
< a href = "http://golang.org/wiki/IDEsAndTextEditorPlugins" > the wiki< / a > .
< / p >
< h2 id = "options" > Options< / h2 >
< p >
The Go ecosystem provides a variety of editor plugins and IDEs to enhance your day-to-day
editing, navigation, testing, and debugging experience.
< / p >
< ul >
< li > < a href = "https://github.com/fatih/vim-go" > Vim Go< / a > : a plugin for Vim to provide Go programming language support< / li >
< li > < a href = "https://marketplace.visualstudio.com/items?itemName=lukehoban.Go" > Visual Studio Code Go< / a > :
an extension for Visual Studio Code to provide support for the Go programming language< / li >
2017-07-20 19:16:03 -06:00
< li > < a href = "https://www.jetbrains.com/go" > Gogland< / a > : Gogland is distributed either as a standalone IDE
or as a plugin for the IntelliJ Platform IDEs< / li >
2017-06-14 13:41:14 -06:00
< / ul >
< p >
2017-07-20 19:16:03 -06:00
Note that these are only a few top solutions; a more comphensive
community-maintained list of
2017-06-14 13:41:14 -06:00
< a href = "https://github.com/golang/go/wiki/IDEsAndTextEditorPlugins" > IDEs and text editor plugins< / a >
2017-07-20 19:16:03 -06:00
is available at the Wiki.
2017-06-14 13:41:14 -06:00
< / p >
< p >
2017-07-20 19:16:03 -06:00
Each development environment integrates a number of Go-specific tools.
2017-06-14 13:41:14 -06:00
The following feature matrix lists and compares the most significant features.
< / p >
< table class = "features-matrix" >
< tr >
< th > < / th >
< th > < img title = "Vim Go" src = "/doc/editors/vimgo.png" > < br > Vim Go< / th >
< th > < img title = "Visual Studio Code" src = "/doc/editors/vscodego.png" > < br > Visual Studio Code Go< / th >
< th > < img title = "Gogland" src = "/doc/editors/gogland.png" > < br > Gogland< / th >
< / tr >
< tr >
< td class = "feature-row" colspan = "4" > Editing features< / td >
< / tr >
< tr >
< td > Build and run from the editor/IDE< / td >
< td class = "yes" > Yes< / td >
< td class = "yes" > Yes< / td >
< td class = "yes" > Yes< / td >
< / tr >
< tr >
< td > Autocompletion of identifers (variable, method, and function names)< / td >
< td class = "yes" > Yes< / td >
< td class = "yes" > Yes< / td >
< td class = "yes" > Yes< / td >
< / tr >
< tr >
< td > Autocompletion based on type< / td >
< td class = "no" > No< / td >
< td class = "no" > No< / td >
< td class = "yes" > Yes< / td >
< / tr >
< tr >
< td > Rename identifiers< / td >
< td class = "yes" > Yes< / td >
< td class = "yes" > Yes< / td >
< td class = "yes" > Yes< / td >
< / tr >
< tr >
< td > Auto format, build, vet, and lint on save< / td >
< td class = "yes" > Yes< / td >
< td class = "yes" > Yes< / td >
< td class = "yes" > Yes< sup > 1< / sup > < / td >
< / tr >
< tr >
< td > Auto insert import paths and remove unused on save< / td >
< td class = "yes" > Yes< / td >
< td class = "yes" > Yes< / td >
< td class = "yes" > Yes< sup > 2< / sup > < / td >
< / tr >
< tr >
< td > Auto generate JSON, XML tags for struct fields< / td >
< td class = "yes" > Yes< / td >
< td class = "yes" > Yes< / td >
< td class = "yes" > Yes< / td >
< / tr >
< tr >
< td class = "feature-row" colspan = "4" > Navigation features< / td >
< / tr >
< tr >
< td > Display documentation inline, or open godoc in browser< / td >
< td class = "yes" > Yes< / td >
< td class = "yes" > Yes< / td >
< td class = "yes" > Yes< / td >
< / tr >
< tr >
< td > Switch between < code > *.go< / code > and < code > *_test.go< / code > file< / td >
< td class = "yes" > Yes< / td >
< td class = "yes" > Yes< / td >
< td class = "yes" > Yes< / td >
< / tr >
< tr >
< td > Jump to definition and referees< / td >
< td class = "yes" > Yes< / td >
< td class = "yes" > Yes< / td >
< td class = "yes" > Yes< / td >
< / tr >
< tr >
< td > Look up for interface implementations< / td >
< td class = "yes" > Yes< / td >
< td class = "yes" > Yes< / td >
< td class = "yes" > Yes< / td >
< / tr >
< tr >
< td > Search for callers and callees< / td >
< td class = "yes" > Yes< / td >
< td class = "yes" > Yes< / td >
< td class = "yes" > Yes< / td >
< / tr >
< tr >
< td class = "feature-row" colspan = "4" > Testing and debugging features< / td >
< / tr >
< tr >
< td > Debugger support< / td >
< td class = "no" > No< / td >
< td class = "yes" > Yes< / td >
< td class = "yes" > Yes< / td >
< / tr >
< tr >
< td > Run a single test case, all tests from file, or all tests from a package< / td >
< td class = "yes" > Yes< / td >
< td class = "yes" > Yes< / td >
< td class = "yes" > Yes< / td >
< / tr >
< tr >
< td > Auto generate tests for packages, files and identifiers< / td >
< td class = "no" > No< / td >
< td class = "yes" > Yes< / td >
< td class = "no" > No< / td >
< / tr >
< tr >
< td > Debug tests< / td >
< td class = "no" > No< / td >
< td class = "yes" > Yes< / td >
< td class = "yes" > Yes< / td >
< / tr >
< tr >
< td > Display test coverage< / td >
< td class = "yes" > Yes< / td >
< td class = "yes" > Yes< / td >
< td class = "yes" > Yes< / td >
< / tr >
< tr class = "download" >
< td > < / td >
< td > < a href = "https://github.com/fatih/vim-go" > Install< a / > < / td >
< td > < a href = "https://marketplace.visualstudio.com/items?itemName=lukehoban.Go" > Install< a / > < / td >
< td > < a href = "https://www.jetbrains.com/go" > Install< a / > < / td >
< / tr >
< / table >
< p >
2017-07-20 19:16:03 -06:00
< sup > 1< / sup > : Possible when enabled via Settings > Go > On Save, < code > go< / code > < code > vet< / code > and < code > golint< / code > are available via plugins. Also runs tests on save if configured.
2017-06-14 13:41:14 -06:00
< br >
< sup > 2< / sup > : Additionally, user input can disambiguate when two or more options are available.
< / p >
< / div >
< style >
.features-matrix {
min-width: 800px;
border-collapse: collapse;
}
.features-matrix th {
width: 60px;
text-align: center;
font-size: 14px;
color: #666;
}
.features-matrix th img {
width: 48px;
}
.features-matrix .yes {
text-align: center;
}
.features-matrix .no {
text-align: center;
background-color: #ffe9e9;
}
.features-matrix .download {
font-weight: bold;
text-align: center;
}
.features-matrix td {
padding: 11px 5px 11px 5px;
border-bottom: solid 1px #ebebeb;
}
.features-matrix .feature-row {
background-color: #ebebeb;
font-weight: bold;
}
< / style >
<!-- TODO(jbd): Add the Atom comparison -->