前面我们直接使用原生的vim8和一些插件配置了GoLang开发环境。现在我们换一种更现代的方式,使用LSP插件coc.vim来支持GoLang开发环境。
安装和配置coc.vim请参照文档:https://github.com/neoclide/coc.nvim
核心插件是coc.vim和vim-go
" 安装强大的LSP客户端coc,支持各种语言 Plug 'neoclide/coc.nvim', {'branch': 'release'} " vim-go是golang的开发插件,项目地址:https://github.com/fatih/vim-go,帮助:help vim-go Plug 'fatih/vim-go', { 'do': ':GoUpdateBinaries' }
coc插件
coc.vim是我们的主角,可以完成代码跳转,自动补全,函数列表等一系列功能,coc.vim是LSP中的client,LSP的server是go官方的软件gopls
至于vim-go,我们使用它一些与go相关的特性,比如编译,测试,gofmt等。分工如下:

安装好coc之后,检查一下状态:
:CocInfo
coc的功能非常齐全,可以这样说,如果coc玩得好,其他什么插件都不需要装,但问题也就来了,齐全带来的后果就是复杂,coc各种复杂的属性,配置,插件,让人没有研究下去的欲望,因此,回到我们的KISS原则,我们只专注于coc核心的功能。
从简单角度出发,我们仅使用coc的以下功能:
- 自动补全。
- 定义跳转。出了常规的定义跳转,强大的是跳转到tag被引用的位置。
- 诊断。可以快速的检查代码错误
通过配置vim中coc相关的参数,就可以支持以上功能,具体配置的文件,见最后完整配置
另外,还要开启language server支持GoLang,在vim中输入:CocConfig,会进入coc的配置文件,在其中输入:
{ "languageserver": { "golang": { "command": "gopls", "rootPatterns": ["go.mod", ".git/"], "filetypes": ["go"] } } }
现在coc能够支持Golang了,可以开始补全,跳转,语法检查等工作,就这么简单,你已经拥有了一个强大的GoLang编辑器
有了coc,我们再配置一些好用的插件吧
其他插件
查找功能是一个编辑器必备的,我们主要关心两种:文件查找和文字搜索。有一个强大的选择:FZF
" 查找文件和搜索的工具 Plug 'junegunn/fzf', { 'do': { -> fzf#install() } } Plug 'junegunn/fzf.vim'
剩下再来一个tagbar,用于显示函数列表。添加一个airview,使vim的状态栏花哨一点:
" airline插件,花里胡哨的好看,用处不大 Plug 'vim-airline/vim-airline' " Tagbar类似于outline, 展示当前文件的函数,变量,类等声明 Plug 'preservim/tagbar'
我们再来一个插件,自动插入代码,这个在不想敲字的时候特别有用,这种插件的专业术语叫snippet。来一个常用的snippet插件吧
" 用于插入代码片段 " ultisnips是snippets的管理器 Plug 'SirVer/ultisnips' " vim-snippets是具体snippets的定义,可添加自己定义的代码片段 Plug 'honza/vim-snippets'
但这破货需要python3的支持,因此在编译vim的时候,得加上
./configure --enable-python3interp=yes
插件就位,来插入一个funcs然后tab一下试试呢,是不是自动给你添加了参数,括号,省了不少事啊
完整配置
Ref
- https://github.com/neoclide/coc.nvim
- https://octetz.com/docs/2019/2019-04-24-vim-as-a-go-ide/
- https://bhupesh-v.github.io/learn-how-to-use-code-snippets-vim-cowboy/
回复 can i order cheap cytotec prices 取消回复