mirror of
https://github.com/golang/go
synced 2024-11-26 17:56:55 -07:00
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-->
|