vim 配置 Golang 开发

2021-05-23

我很喜欢 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 的开发了。

目前只是配置了一些基本的插件,随着我的继续学习,以后会添加更多的插件来提高效率,也包括快捷键的配置,都会更新在这里。

Vim

Jeff Liu

Java Generics

Java Class 文件