在 VS Code 中使用 gopls

簡介

我一直是用 VS Code 做爲 Go 語言的 IDE,使用的是官方的 Go 擴展, 但在使用過程當中發現有時候代碼提示不夠智能, 或者說基本沒有提示.git

Go 擴展默認是使用大量的 Go 工具來提供各類功能的, 每一個工具提供某個方面的能力, 好比代碼提示是依靠 gocode 的.github

不過微軟在開發 VS Code 過程當中, 定義一種協議, 語言服務器協議, Language Server Protocol.golang

這但是個好東西, 若是你須要開發編輯器或 IDE, 就不須要再爲每種語言實現諸如自動完成, 代碼提示等功能了, 直接利用 語言服務器協議 就好了.json

gopls 就是官方的語言服務器, 當前處於 alpha 狀態.vim

安裝並設置 gopls

安裝方式一

打開 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, 請參考官方安裝文檔中的設置.

目前支持如下的編輯器:

  • VSCode
  • Vim / Neovim
  • Emacs
  • Acme
  • Sublime Text

總結

牛逼, 終於不用再爲殘疾的代碼補全而苦惱了.

相關文章
相關標籤/搜索