我一直是用 VS Code 做爲 Go 語言的 IDE,使用的是官方的 Go 擴展, 但在使用過程當中發現有時候代碼提示不夠智能, 或者說基本沒有提示.git
Go 擴展默認是使用大量的 Go 工具來提供各類功能的, 每一個工具提供某個方面的能力, 好比代碼提示是依靠 gocode 的.github
不過微軟在開發 VS Code 過程當中, 定義一種協議, 語言服務器協議, Language Server Protocol.golang
這但是個好東西, 若是你須要開發編輯器或 IDE, 就不須要再爲每種語言實現諸如自動完成, 代碼提示等功能了, 直接利用 語言服務器協議 就好了.json
gopls 就是官方的語言服務器, 當前處於 alpha 狀態.vim
打開 VS Code 的設置, 搜索 go.useLanguageServe
, 並勾選上. 默認狀況下, Go 擴展會提示你安裝 gopls.bash
若是長時間安裝不上, 能夠嘗試手動安裝, 官方安裝指南.服務器
另外也有多是網絡的問題, 直接去 github.com/golang/tool… 下載, 而後使用 go isntall github.com/golang/tools/cmd/gopls
安裝.網絡
網絡好, 或者設置 goproxy 代理後, 能夠直接手動安裝 gopls, 官方提示不要使用 -u.編輯器
go get golang.org/x/tools/gopls@latest
複製代碼
裝完以後, 添加以下的配置, 若是使用第一種安裝方式, 那麼第一行已經存在了:工具
"go.useLanguageServer": true,
"[go]": {
"editor.snippetSuggestions": "none",
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.organizeImports": true
}
},
"gopls": {
"usePlaceholders": true, // add parameter placeholders when completing a function
"wantCompletionDocumentation": true // for documentation in completion items
},
"files.eol": "\n", // formatting only supports LF line endings
複製代碼
若是你須要在不一樣的編輯器中使用 gopls, 請參考官方安裝文檔中的設置.
目前支持如下的編輯器:
牛逼, 終於不用再爲殘疾的代碼補全而苦惱了.