我很喜欢 Vim 编辑器,也想学习下 Golang,于是在一台旧的 Macbook Pro 上配置了 Golang 的 Vim 开发环境。
neovim 和 vim-plug
我使用的是 neovim,插件管理用的是 vim-plug。首先通过 homebrew 安装 neovim:
brew install neovim
安装完成后,通过命令 nvim
启动 neovim,我在 zsh 的配置文件 .zshrc
里添加了
alias vim="nvim"
这样就把命令 vim
作为了 nvim
的别名,使用 vim
即可打开 neovim。
接着,安装 vim 的插件管理工具 vim-plug,在他的 github 上有安装方法
sh -c 'curl -fLo "~/.local/share/nvim/site/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim'
然后就可以使用 vim-plug 来管理插件。
不同于 vim 的 ~/.vimrc
,neovim 的配置文件是 ~/.config/nvim/init.vim
,不过你可以通过 ln -s ~/.vimrc ~/.config/nvim/init.vim
让 neovim 使用 vim 的 .vimrc
配置文件。
Golang
在 Golang 的官网上有安装方法,我依旧使用了 homebrew 来安装:
brew install go
homebrew 将 Golang 安装在了 /usr/local/Cellar/go
目录下,安装完成后可以通过 go version
查看是否安装成功。
通过命令 go env
可以看到 Golang 的各种环境配置。由于我之前安装过 1.12 版本,现在安装的是 1.16.3 版本,导致有些环境变量有了冲突,所以在 ~/.zshrc
中对这些变量做了修改:
export GOPATH=/usr/local/Cellar/go/1.16.3
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
插件
这一步是安装需要用到的 vim 插件,在 neovim 的配置文件 ~/.config/nvim/init.vim
中添加这些插件:
call plug#begin()
"Golang
Plug 'fatih/vim-go', {'do': ':GoInstallBinaries'}
"File browser
Plug 'preservim/nerdtree'
"Color theme
Plug 'morhetz/gruvbox'
"File search
Plug 'junegunn/fzf', {'do': { -> fzf#install()}}
Plug 'junegunn/fzf.vim'
"Auto paris
Plug 'jiangmiao/auto-pairs'
"Airline
Plug 'vim-airline/vim-airline'
"Coc
Plug 'neoclide/coc.nvim', {'branch': 'release'}
call plug#end()
这些插件是我目前用到的,在他们的 github 上都有讲安装和使用方法。
其中 coc.nvim
是基于 LSP(language server protocol) 提供代码补全等功能的一个插件,相比于另一个通用的代码补全插件 YouCompleteMe,Coc 的补全提示更加精确和智能。
修改并保存配置文件后,在 vim 中输入 :PlugInstall
即可安装这些插件。
vim-go 插件需要执行 :GoInstallBinaries
来安装一些依赖的工具,这在执行插件的安装命令时会自动安装,如果出现安装失败的问题,可以之后在 vim 中手动输入 :GoInstallBinaries
来安装。
对于 Coc,在他的 github 上写到,需要添加一些配置使得他能够正常工作,这些配置里也包括了一些快捷键的定义。由于代码比较长,这里就不写了,具体可以访问前面的链接,把那些代码添加在 ~/.config/nvim/init.vim
中。
插件安装完成后,需要配置 Coc 对 Golang 的支持。在 vim 中输入 :CocConfig
,会打开 Coc 的配置文件,他存储在 ~/.config/nvim/coc-settings.json
里。在这个文件中,添加如下配置:
{
"languageserver": {
"golang": {
"command" "gopls",
"rootPatterns": ["go.mod", ".vim/", ".git/", ".hg/"],
"filetypes: ["go"]
}
}
}
保存退出即可。
另外,我也添加了一些配置项,包括 vim 的配置和插件的快捷键:
"Line number
set number
"Indent
set tabstop=4
set softtabstop=4
set shiftwidth=4
"Text search
set ignorecase
"Color theme
colorscheme gruvbox
"Syntax highlighting
syntax on
"Highlight current line
set cursorline
"Redraw the screen and removes any search highlighting
nnoremap <silent> <C-l> :nohl<CR><C-l>
"Move up/down consider wrapped lines
nnoremap j gj
nnoremap k gk
"Block cursor
set guicursor=n-v-c:block-Cursor
"File search
namp <C-p> :FZF<CR>
"NERDTree
map <C-n> :NERDTreeToggle<CR>
至此,就可以用 vim 来做 Golang 的开发了。
目前只是配置了一些基本的插件,随着我的继续学习,以后会添加更多的插件来提高效率,也包括快捷键的配置,都会更新在这里。