本文介绍 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 成功。

Linux vim-go 开发环境搭建的更多相关文章

  1. Unix/Linux环境C编程新手教程(12) openSUSECCPP以及Linux内核驱动开发环境搭建

    1. openSUSE是一款优秀的linux. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaXRjYXN0Y3Bw/font/5a6L5L2T/font ...

  2. Unix/Linux环境C编程入门教程(12) openSUSECCPP以及Linux内核驱动开发环境搭建

    1. openSUSE是一款优秀的linux. 2.选择默认虚拟机 3.选择稍后安装操作系统 4.选择linux  opensuse 5. 选择默认虚拟机名称 6.设置处理器为双核. 7.内存设置为2 ...

  3. 【课程分享】深入浅出嵌入式linux系统移植开发 (环境搭建、uboot的移植、嵌入式内核的配置与编译)

    深入浅出嵌入式linux系统移植开发 (环境搭建.uboot的移植.嵌入式内核的配置与编译) 亲爱的网友,我这里有套课程想和大家分享,假设对这个课程有兴趣的,能够加我的QQ2059055336和我联系 ...

  4. Linux CentOS Python开发环境搭建教程

      CentOS安装Python 1.CentOS已经自带安装了2.x版本,先尝试python命令检查已安装的版本.如果你使用rpm.yum或deb命令安装过,请使用相对命令查询. 2.复制安装文件链 ...

  5. Linux系统Go开发环境搭建

    Go 语言是由谷歌的科学家开发的,并开源的新语言,被誉为"21世纪的C语言",它的主要目标是将静态语言的安全性和高效性与动态语言的易开发性进行有机结合,达到完美平衡,从而使编程变得 ...

  6. Linux下PHP开发环境搭建

    平时写程序时都是在服务器已经搭建好的PHP环境进行的.出于对未知知识的好奇,这几天在自己的机器上搭建起了PHP开发环境.本想轻松顺利的看到phpinfo显示在我的页面上,没想到安装环境时一路的erro ...

  7. Linux下golang开发环境搭建

    对于golang开发来说,Windows下可以用vscode或者liteide都不错,但是Linux下的开发也就只有vim了,所以怎么搞笑的利用vim进行golang开发呢? 参考官方推荐的一个插件: ...

  8. [z]Windows 下基于 Eclipse 的可视化远程 Linux C/C++ 开发环境搭建

    http://blog.csdn.net/lostaway/article/details/8086056 1.简介 Windows 下远程 Linux 开发工具,比较著名的就是 WinGDB 和 M ...

  9. linux C/C++开发环境搭建指南

    一.安装基本开发环境 1.配置GCC 刚装好的系统中已经有GCC了,但是这个GCC什么文件都不能编译,因为没有一些必须的头文件,所以要安装build-essential这个软件包,安装了这个包会自动安 ...

  10. Linux下Java开发环境搭建—CentOS下Eclipse的安装教程

    据了解,在Linux下的Java开发很多时候都比较喜欢使用vim + 插件,反而很少使用Eclipse,但是我是第一次使用Linux来进行Java编程,就什么都体验下啦,好啦,废话不多说,直接开始啦. ...

随机推荐

  1. C++ Qt开发:ProgressBar进度条组件

    Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍Progres ...

  2. CAP 8.0 版本发布通告 - CAP 7岁生日快乐!

    前言 今天,我们很高兴宣布 CAP 发布 8.0 版本正式版,从 2016 年 12 月 14 日CAP立项到 2023 年 12 月14 日发布 8.0 版本刚好满 7 年,祝 CAP 7 岁生日快 ...

  3. 华企盾DSC苹果Mac针对Word编辑文件不加密

    解决方法:查看了客户端的控制台日志显示的进程名和加密后缀都正常,可能文件内部有rename的操作,加密所有类型解决 ​

  4. SPSC Queue

    在多线程编程中,一个著名的问题是生产者-消费者问题 (Producer Consumer Problem, PC Problem). 对于这类问题,通过信号量加锁 (https://www.cnblo ...

  5. 【scikit-learn基础】--『监督学习』之 决策树分类

    决策树分类算法是一种监督学习算法,它的基本原理是将数据集通过一系列的问题进行拆分,这些问题被视为决策树的叶子节点和内部节点.决策树的每个分支代表一个可能的决策结果,而每个叶子节点代表一个最终的分类结果 ...

  6. 拓扑排序软件设计——ToplogicalSort_app(含有源码、需求分析、可行性分析、概要设计、用户使用手册)

    @ 目录 前言 1. 需求分析 2. 可行性分析 2.1 简介 2.2 技术可行性分析 2.2.1 技术实现方案 2.2.2 开发人员技能要求 2.2.3 可行性 2.3 操作可行性分析 2.4 结论 ...

  7. Mybatis 源码2——SqlSession,执行器和一级缓存

    一丶 SqlSessionFactoryBuilder,SqlSessionFactory,sqlSession mybatis 获取sqlSession是通过SqlSessionFactory获取的 ...

  8. Apache Hudi在信息服务行业构建流批一体的实践

    个人介绍 李昂 高级数据研发工程师 Apache Doris & Hudi Contributor 业务背景 部门成立早期, 为了应对业务的快速增长, 数仓架构采用了最直接的Lambda架构 ...

  9. 基于AI的架构优化:创新数据集构造法提升Feature envy坏味道检测与重构准确率

    本文分享自华为云社区<华为云基于AI实现架构坏味道重构取得业界突破,相应文章已被软工顶会FSE 2023收录>,作者: 华为云软件分析Lab. 基于AI技术实现架构坏味道检测与重构建议是当 ...

  10. 618大促,电商企业如何拔得头筹,“敏捷+ DevOps”有话说

    前言 当今企业发展不再以大为目标,而更多追求强和快,因为只有后者才能适应时代变化让企业处以不败之地,我们称这个时代为快鱼吃大鱼的时代,追求快和强也是企业的新形态. 传统行业小到菜场经济,大到航空航天, ...