goenv
goenv copied to clipboard
How to combine Goenv to use VSCode?
Does anyone use both vscode and goenv?
Because of different projects use different Golang versions. So I look for Golang Version Management tool. I found goenv
, it's cool. Goenv
can install different Goalng versions and switch easily like pyenv
. Very thanks for this tool.
I use VSCode to write the golang code. Although I have set goenv local 1.18.10
, VSCode still recognizes the Golang version of goenv global
. Like this.

So how to change to 1.18.10
?
(Very sorry for my poor english)
Ran into the same issue as well. Any guidance on how to fix this since it prepends to the path causing goenv
to be useless in this case. Thanks in advance.
me too ... looking forward to someone to help solve it.
One possible way is to add the following line(replace the path with real $GOROOT) to tell vscode the path of go root, to either the ~/Library/Application Support/Code/User/settings.json
(default for current user) or /Users/yangfei/work/code/vitess/.vscode/settings.json
(will override user configuration and project only)
"go.goroot": "/Users/yangfei/work/tools/goenv/versions/1.19.9"
➜ echo $GOROOT
/Users/yangfei/work/tools/goenv/versions/1.19.9
For example
The above solution is not ideal since settings.json will have to be updated whenever the go version is updated.
When I'm in a directory that defines a .go-version
, I open vscode or vscodium as follows from this directory:
# For vscode
$> code .
# For vscodium
$> codium .
This allows the IDE to inherit the environment values from this directory. Make sure that you already closed any vscode instances before opening the IDE from this directory.
I think changing the goroot values manually within vscode is not a maintainable solution when you're working with multiple projects with different go env
values.
@tabris233 @waset https://github.com/owenthereal/goup, use this bro,
the config is this,
when you use goup change go verison,reload vscode, the goversion in the status bar will automatically switch
I sorted it out and it's working as expected adding this to vscode settings:
"go.alternateTools": {
"go": "/path/to/goenv/.goenv/shims"
},
Usually, the path to goenv is $HOME/.goenv
. This seems to tell gopls to use the go version set by goenv instead of injecting the first version it finds on the system. Important to note that I couldn't change go versions on the fly, meaning I need to set the goenv version I want before starting vscode. Most likely a reset of the gopls would do the trick, but I haven't tried that.
Another important thing, the issue https://github.com/go-nv/goenv/issues/367 seems to be a duplicate of this one. I have not tried all the solutions proposed there as what I described already fixed the issue for me (tested in Mac and Ubuntu on WSL2).
If you try all the above steps and you're still having issues, close all vscode instances and run goenv rehash
, then try again