## 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 Go: a plugin for Vim to provide Go programming language support
- Visual Studio Code Go: an extension for Visual Studio Code to provide support for the Go programming language
- Gogland: Gogland is distributed either as a standalone IDE or as a plugin for the IntelliJ Platform IDEs

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

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