## Introduction

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 the wiki.

## Options

The Go ecosystem provides a variety of editor plugins and IDEs to enhance your day-to-day editing, navigation, testing, and debugging experience.

- vim: vim-go plugin provides Go programming language support
- Visual Studio Code: Go extension provides support for the Go programming language
- Gogland: Gogland is distributed either as a standalone IDE or as a plugin for the commercial IntelliJ Platform IDEs
- Atom: Go-Plus is an Atom package that provides enhanced Go support

Note that these are only a few top solutions; a more comphensive community-maintained list of IDEs and text editor plugins is available at the Wiki.

Each development environment integrates a number of Go-specific tools. The following feature matrix lists and compares the most significant features.

| vim | Visual Studio Code | Gogland | Atom
--- | --- | --- | --- | ---
Editing features
Build and run from the editor/IDE | Yes | Yes | Yes | Yes
Autocompletion of identifers (variable, method, and function names) | Yes | Yes | Yes | Yes
Type-aware autocompletion | No | No | Yes | No
Rename identifiers | Yes | Yes | Yes | Yes
Auto format, build, vet, and lint on save | Yes | Yes | Yes1 | Yes
Auto insert import paths and remove unused on save | Yes | Yes | Yes2 | Yes
Auto generate JSON, XML tags for struct fields | Yes | Yes | Yes | Yes
Navigation features
Display documentation inline, or open godoc in browser | Yes | Yes | Yes | Yes
Switch between `*.go` and `*_test.go` file | Yes | Yes | Yes | No
Jump to definition and referees | Yes | Yes | Yes | Yes
Look up for interface implementations | Yes | Yes | Yes | Yes
Search for callers and callees | Yes | Yes | Yes | Yes
Testing and debugging features
Debugger support | No | Yes | Yes | Yes3
Run a single test case, all tests from file, or all tests from a package | Yes | Yes | Yes | No
Auto generate tests for packages, files and identifiers | No | Yes | No | No
Debug tests | No | Yes | Yes | Yes3
Display test coverage | Yes | Yes | Yes | Yes
| Install | Install | Install | Install

1Possible when enabled via Settings > Go > On Save, `go` `vet` and `golint` are available via plugins. Also runs tests on save if configured.
2Additionally, user input can disambiguate when two or more options are available.
3Available if the go-debug package is installed.