Linux vim-go 開發環境搭建



本文介紹 Linux 下 vim-go 的開發環境搭建。主要參考這篇博客進行的配置,其中記錄了幾個搭建環境時遇到的問題。

1. vim-go 開發環境搭建

1.1 用戶隔離

由於使用的是共享宿主機,為不影響其它用戶使用,首先新建用戶:

# 新建用戶 chunqiu
useradd chunqiu
passwd chunqiu

# visudo 更改 sudoers 使得 chunqiu 能提權到 root
chunqiu ALL = ALL NOPASSWD: ALL

切換身份到 chunqiu, go get github 查看能否下載 github 包。發現下載不了,查看 go env 發現 GOPROXY 模式為 direct,配置國內代理:

[chunqiu@coolBoy-wksp-a cobra]$ go env -w GOPROXY="https://goproxy.cn,direct"
[chunqiu@coolBoy-wksp-a cobra]$ go env | grep proxy
GOPROXY="https://goproxy.cn,direct"

除了代理項外,檢查 GO111MODULE 配置:

[chunqiu@coolBoy-wksp-a cobra]$ go env | grep 111
GO111MODULE="on"

注意這里 GO111MODULE 有三種配置,off/on/auto 他們分別表示:

  • GO111MODULE = on: 強制使用 Go 模塊,需要 go.mod 才能工作。
  • GO111MODULE = off: 強制 Go 使用 GOPATH 模式,即使在 GOPATH 外。
  • GO111MODULE = auto: Go 1.13 版本之后的行為是,當存在 go.mod 或處於 GOPATH 外,其行為等同於 GO111MODULE = on;當存在 GOPATH 內,且沒有 go.mod 文件存在時,其行為等同於 GO111MODULE = off。

注:詳細了解 GO111MODULE 可參看這里
再次 go get github 包發現 download 成功。

1.2 搭建 vim-go

根據引言的博客搭建 vim-go,具體搭建流程不介紹了,博客介紹的夠詳細了。這里主要記錄下搭建過程中遇到的問題。

1.2.1 HTTP/2 stream1

下載插件時報錯,提示:HTTP/2 stream 1 was not closed cleanly before end of the underlying stream。

在 root 用戶下,下載插件沒問題,在 chunqiu 用戶下下載出錯。發現是 git 默認的通信協議出問題,將默認的通信協議修改為 http/1.1:

git config --global http.version HTTP/1.1

再次下載插件,發現報錯信息提示: Failed to connect to github.com port 443:connection timed out。

發現在公司網絡下 git 未設置代理,設置代理:

git config --global http.proxy http://10.***.*.**:8080
git config --global https.proxy https://10.***.*.**:8080

再次下載插件提示成功。

1.2.2 Tagbar: Exuberant ctags not found!

下載插件報錯,提示

Tagbar: Exuberant ctags not found!
Please download Exuberant Ctags from ctags.sourceforge.net and install it in a directory in your $PATH or set g:tagbar_ctags_bin.

下載 ctags:

# yum
sudo yum install ctags-etags

# apt-get
sudo apt-get install exuberant-ctags

重新下載插件 ctags 成功。

1.2.3 ycmd server SHUT DOWN

下載插件成功,vim 提示:The ycmd server SHUT DOWN (restart with ':YcmRestartSer... using it. Follow the instructions in the documentation.

出現這樣的報錯可能是 bundle/vim-plug 更新了 YCM(YouCompleteMe) , 而本地沒有重新編譯 YCM。YCM 提示重新編譯,重新編譯如下:

[chunqiu@coolBoy-wksp-a YouCompleteMe]$ ls ~/.vim/plugged/YouCompleteMe/
autoload     CODE_OF_CONDUCT.md  COPYING.txt  install.py  plugin          python     run_tests.py  third_party  vimrc_ycm_minimal
codecov.yml  CONTRIBUTING.md     doc          install.sh  print_todos.sh  README.md  test          tox.ini
[chunqiu@coolBoy-wksp-a YouCompleteMe]$ ./install.py

編譯提示 ERROR: Unable to find executable ‘cmake’. CMake is required to build ycmd, 缺少 cmake,centos 下 yum install cmake 安裝 cmake,重新編譯,成功。

1.2.4 cannot determine module path

go run 報錯:

go: cannot determine module path for source directory ... (outside GOPATH, module path must be specified)

解決方式是需要創建 module:

  1. 在 src 目錄下創建項目:

    go mod init <project_name>
    
  2. go mod tidy,下載依賴包。

再次編譯,運行 go run 成功。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM