mirror of
https://github.com/golang/go
synced 2024-11-23 00:30:07 -07:00
77ee861ca2
The Go ecosystem provides many tools to make Go development more productive and seamless. Document the availability of the editor plugins and IDEs, add an overview of feature support and screencasts. Updates #20398. Updates #20402. Updates #20399. Updates #20401. Updates #20569. Change-Id: I0c6cb48eb4e3848807aaad78390493e14f097916 Reviewed-on: https://go-review.googlesource.com/45772 Reviewed-by: Steve Francia <spf@golang.org>
210 lines
5.8 KiB
HTML
210 lines
5.8 KiB
HTML
<!--{
|
|
"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
|
|
that makes Go development more productive and seamless.
|
|
A comphensive list of editor support and IDEs for Go development is available on
|
|
<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>
|
|
<li><a href="https://www.jetbrains.com/go">Gogland</a>: Gogland is distributed either as standalone IDE
|
|
or a plugin for the IntelliJ Platform IDEs</li>
|
|
</ul>
|
|
|
|
<p>
|
|
Note that these are only a few top solutions, a more comphensive
|
|
community maintained list of
|
|
<a href="https://github.com/golang/go/wiki/IDEsAndTextEditorPlugins">IDEs and text editor plugins</a>
|
|
is available at the wiki.
|
|
</p>
|
|
|
|
<p>
|
|
Each development environment provides a large variety of static and dynamic tool integrations.
|
|
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>
|
|
<sup>1</sup>: Possible when enabled via Settings > Go > On Save, go vet and golint are available via plugins. Also runs tests on save if configured.
|
|
<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--> |