SpaceVim

A modular Vim/Neovim configuration


Home | About | Quick start guide | Documentation | Development | Community | Sponsors | 中文


Blogs » Use Vim as a Go IDE

This is a general guide for using SpaceVim as a Go IDE, including layer configuration and usage. Each of the following sections will be covered:

Enable language layer

To add go language support in SpaceVim, you need to enable the lang#go layer. Press SPC f v d to open SpaceVim configuration file, and add following configuration:

[[layers]]
  name = "lang#go"

for more info, you can read the lang#go layer documentation.

Language server

There are two ways to setup the golang language server protocol.

neovim(>=0.5.0)

If you are using nvim(>=0.5.0). You need to use enabled_clients to specific the language servers. for example:

[[layers]]
    name = 'lsp'
    enabled_clients = ['gopls']

vim or neovim(<0.5.0)

To enable language server protocol support, you may need to enable lsp layer.

[[layers]]
  name = "lsp"
  filetypes = [
    "go"
  ]

code completion

By default the autocomplete layer has been enabled, so after loading lang#go layer, the code completion for go language should work well.

alternate file jumping

To manage the alternate file for a project, you may need to create a .project_alt.json file in the root of your project.

for example, add following content into the .project_alt.json file:

{
  "src/*.go": {"alternate": "test/{}.go"},
  "test/*.go": {"alternate": "src/{}.go"}
}

with this configuration, you can jump between the source code and test file via command :A

code running

The default code running key binding is SPC l r. It will run go run current_file asynchronously. And the stdout will be shown on a runner buffer.

gorun

project building

Key binding for building current project is SPC l b, It will run go build asynchronously. after building successfully you should see this message on the cmdline:

vim-go: [build] SUCCESS

run test

There are two key bindings for running test, SPC l t run test for current file, SPC l T only run test for current function. if the test is passed, you should see following message on cmdline:

vim-go: [test] SUCCESS 

code coverage

Key binding for showing the coverage of your source code is SPC l c, it will call GoCoverageToggle command from vim-go.

cov

code format

The format layer use neoformat as default tool to format code, it will run gofmt on current file. And the default key binding is SPC b f.

[[layers]]
  name = "format"

Powered by Jekyll