123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210 |
- <!--{
- "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 make Go development more productive and seamless.
- A comprehensive list of editor support and IDEs for Go development is available at
- <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 a standalone IDE
- or as 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 integrates a number of Go-specific tools.
- 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, <code>go</code> <code>vet</code> and <code>golint</code> 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-->
|