簡介
我一直是用 VS Code 作爲 Go 語言的 IDE,使用的是官方的 Go 擴展,
但在使用過程中發現有時候代碼提示不夠智能, 或者說基本沒有提示.
Go 擴展默認是使用大量的 Go 工具來提供各種功能的,
每個工具提供某個方面的能力, 比如代碼提示是依靠 gocode 的.
不過微軟在開發 VS Code 過程中, 定義一種協議, 語言服務器協議,
Language Server Protocol.
這可是個好東西, 如果你需要開發編輯器或 IDE,
就不需要再爲每種語言實現諸如自動完成, 代碼提示等功能了,
直接利用 語言服務器協議 就行了.
gopls 就是官方的語言服務器, 當前處於 alpha 狀態.
安裝並設置 gopls
安裝方式一
打開 VS Code 的設置, 搜索 go.useLanguageServe
, 並勾選上.
默認情況下, Go 擴展會提示你安裝 gopls.
如果長時間安裝不上, 可以嘗試手動安裝,
官方安裝指南.
安裝方式二
另外也有可能是網絡的問題, 直接去 https://github.com/golang/too...
下載, 然後使用 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, 請參考官方安裝文檔中的設置.
目前支持以下的編輯器:
- VSCode
- Vim / Neovim
- Emacs
- Acme
- Sublime Text
總結
牛逼, 終於不用再爲殘疾的代碼補全而苦惱了.