MacOS下基于vim搭建golang开发环境

背景

去年年初换了工作,新公司给配发的是mac的笔记本(程序员用mac作为开发整的比windows好),另外由于工作的想要使用golang作为开发语言。
之前一直使用LiteIDE作为golang的开发IDE,用的倒也顺手。可是最近LiteIDE不知道怎么得老是抽风,没办法进行函数/变量的跳转。这让我阅读代码时很是不爽,大大降低了我的工作效率。再加上年前去公司总部开年会时看到小组内其他成员都是用vim作为开发工具,而我用IDE还被大家鄙视了一番,所以最近准备也在本地搭建一个基于vim的golang开发环境,让自己也变成真正的程序员。

基础环境说明

MacBook Pro一台,据说这台电脑是公司一个大佬之前用过的(因为公司其他人员都是用的MacBook Air)。配置如下截图。
MacOS下基于vim搭建golang开发环境_第1张图片

插件安装

  • 插件Vundle.vim安装
    Vundle.vim是一款开源的的vim插件管理器,也是目前大家使用较多的一款插件管理器。我们可以通过改插件方便快捷的安装相应的vim插件到本地。
    下载插件Vundle.vim到~/.vim/bundle目录中
~$ cd ~
~$ mkdir -p ~/.vim/bundle
~$ git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim

配置.vimrc文件
如果.vimrc文件不存在,则先使用“touch ~/.vimrc”命令创建。
使用“vim ~/.vimrc”命令,打开.vimrc文件,并在文件中加入如下配置:

set nocompatible              " be iMproved, required
filetype off                  " required

" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()

" let Vundle manage Vundle, required
Plugin 'gmarik/Vundle.vim'

" All of your Plugins must be added before the following line
call vundle#end()            " required
filetype plugin indent on    " required
  • 安装golang插件vim-go
    我们通过Vundle.vim来安装vim-go。编辑~/.vimrc文件,在vundle#begin和vundle#end之间增加一行:Plugin ‘fatih/vim-go’。
    再在vim的命令行模式执行: PluginInstall命令,这时候Vundle.vim会在终端左侧打开一个Vundle Installer Preview子窗口,且在窗口下方会提示:“Processing ‘fatih/vim-go’”(代表Vundle.vim正在下载并安装vim-go),我们只需要等待即可。待安装完毕后,提示信息会变成“Done”。
    这是我们会发现在~/.vim/bundle目录下多了一个vim-go子目录。

  • 安装go.tools.Binaries
    vim-go的正确使用需要二进制的golang相关命令作为辅助,比如:gocode、godef、goimports等。具体需要的命令如下:
    MacOS下基于vim搭建golang开发环境_第2张图片
    截图中除了方框框选的2个命令外都是vim-go所要依赖的相关二进制命令。
    由于这其中有部分命令的代码是托管在code.google.com上,所以我们必须通过kxsw获取。可以借助“http://gopm.io”或“https://goproxy.io,direct”的帮助去下载这些相应的包。
    如果安装使用的是root用户,则可以直接在vim的命令行模式中输入“:GoInstallBinaries”命令来安装这些命令。需要注意的是GoInstallBinaries的执行是交互式的,所以需要你按回车来确认。
    由于我配置vim的环境使用的是普通用户,所以在vim的命令行模式中使用“:GoInstallBinaries”命令来安装这些二进制命令时会出错,原因是普通用户没有对/usr/local/go/bin目录的写权限,从而没法将编译后生成的二进制命令copy到该目录下。因此需要切换到root用户后通过“go get”命令来手动的安装这些二进制命令。如下截图是部分安装的命令行脚本(因为有部分是通过手动方式执行的):

go get github.com/go-delve/delve/cmd/dlv
go get github.com/mdempsky/gocode
go get github.com/josharian/impl
go get github.com/golangci/golangci-lint/cmd/golangci-lint
go get github.com/jstemmer/gotags
go get golang.org/x/tools/cmd/gorename
go get golang.org/x/tools/cmd/goimports
go get github.com/fatih/gomodifytags
go get honnef.co/go/tools/cmd/keyify
go get golang.org/x/lint/golint
go get github.com/koron/iferr
go get github.com/klauspost/asmfmt/cmd/asmfmt
go get github.com/stamblerre/gocode

最后再在vim的命令行模式中执行一次“:GoInstallBinaries”命令即可完成对vim-go的配置工作。

  • vim的golang开发IDE的使用
    执行":GoDef"或在命令模式下敲入gd,vim会跳转到光标所在位置函数或类型或变量的定义位置。
    执行":GoImports",vim会自动导入需要导入的包。
    执行":GoLint",在当前go源文件上运行golint命令。
    执行":GoDoc",打开当前光标对应符号的go文档。
    执行":GoVet",在当前目录下运行go vet在当前go源文件上。
    执行":GoRun",编译运行当前main package。
    执行":GoBuild",编译当前包,这取决于你的源文件,GoBuild不产生结果文件。
    执行":GoInstall",安装当前包。
    执行":GoTest",测试你当前路径下的_test.go文件。
    执行":GoCoverage",创建一个测试覆盖结果文件,并打开浏览区展示当前包的情况。
    执行":GoErrCheck",检查当前包中可能的未捕获errors。
    执行":GoFiles",显示当前包对应的源文件列表。
    执行":GoDeps",显示当前包的依赖包列表。
    执行":GoImplements",显示当前类型实现的interface列表。
    执行":GoRename [to]",将当前光标下的符号替换为[to]对应的符号。

到这里vim已经可以作为golang的开发IDE正常使用了,但是还缺少对应的补全功能。后边将通过YouCompleteMe插件来完成。

  • YouCompleteMe插件的安装
    YouCompleteMe是一个代码提示和补全的vim插件,支持包括c/c++、golang、c#、ruby等多种编程语言的代码补全。
    在~/.vimrc的vundle#begin和vundle#end之间增加一行:Plugin ‘Valloric/YouCompleteMe’。然后在vim命令行模式下执行":PluginInstall"命令。Vundle.vim将会自动去下载并安装YouCompleteMe。
    安装完成后执行“cd ~/.vim/bundle/YouCompleteMe”,进入到YouCompleteMe目录,执行脚本install.py配置golang支持。脚本如下:“./install.py --go-completer”。这时将会配置vim对golang语法的补全支持。

特别说明:

  1. 在配置了YouCompleteMe后,使用vim时,如果出现形如:“YouCompleteMe unavailable: requires Vim compiled with Python (2.6+ or 3.3+)”的错误提示,则是因为当前使用的vim在编译前的配置没有加入:“–enable-python=yes --enable-python3=yes”选项开启对python的支持。这时需要重新配置和编译vim。步骤如下:
    1.1. 进入到vim的源文件顶层目录。
    1.2. 执行“./configure --enable-python --enable-python3”。
    1.3. 执行“make”。
    1.4. 将新编译的vim程序(在./src/目录下)拷贝到/usr/bin目录下,替换已有的vim。
  2. 如果在配置vim-go时出现vim的版本低于vim-go对应的最低版本时,需要升级vim的版本。
  3. 源码编译升级vim。
    3.1. 下载vim源码:git clone https://github.com/vim/vim.git ~/.。
    3.2. 编译源码。
    3.2.1. 进入vim源码目录:cd ~/.。
    3.2.2. 配置编译选项:./configure --enable-python=yes --enable-python3=yes。
    3.2.3. 编译vim:make。
    3.2.4. 安装vim:sudo cp ./src/vim /usr/bin/。
  4. 新版Mac加建了安全保护机制,所以默认情况下/usr/local、/usr/bin等目录被安全机制锁住了,root用户也无法进行操作,但是我们实际应用中有时候需要操作关键目录,这时候我们需要有一定的策略。
    4.1. 重启Mac, 启动时按住command+R键,进入恢复模式。
    4.2. 在界面上方菜单中找到Terminal,打开终端。
    4.3. 在终端中输入:csrutil disable。
    4.4. 重启Mac,使其正常启动。
    4.5. 在terminal中输入:csrutil status,显示为disable,则证明安全机制已经被关闭。
    4.6. 同样在恢复模式中输入:csrutil enable则可以重新开启安全机制。
    4.7. 在关闭安全模式后原来一些root用户都没办法操作的目录已经变得可以操作了。为了安全起见,在非安全模式下完成了相关操作后要即使恢复Mac到安全模式。

参考文档

https://github.com/vim/vim/blob/master/READMEdir/README_mac.txt
https://github.com/vim/vim/blob/master/README.txt
https://www.cnblogs.com/chris-cp/p/5846640.html
https://github.com/fatih/vim-go/tree/master
https://blog.csdn.net/Notzuonotdied/article/details/54836531
https://wmjtxt.github.io/2018/05/14/%E5%9C%A8deepin%E4%B8%8A%E5%AE%89%E8%A3%85YouCompleteMe/
https://blog.csdn.net/SoftpaseFar/article/details/102668338
https://github.com/ycm-core/YouCompleteMe#installation
https://www.cnblogs.com/YMaster/p/11209813.html
https://www.cnblogs.com/china8036/p/4658605.html

你可能感兴趣的:(vim,mac,golang)