为什么要使用vim来开发golang呢,GoLand它不香吗?香,但是要论快,谁能比vim更快呢?
而天下武功,唯快不破,golang,也仅是武功的一种。
vim对golang的支持很好,通过少量的插件就可以打造golang编辑器
vim8版本
首先我们要使用高vim版本,vim8来一个
ctags
用过vim都知道ctags,要想自动补全,在各种定义和实现之间跳转,都离不开ctags。但ctags不是插件,是单独的软件,要预先安装好:
//查看版本 ctags --version //查看ctags支持的语言 ctags --list-languages //查看ctags支持的语言细节 ctags --list-kinds //查看ctags支持的文件名 ctags --list-maps
ctags5.9默认就支持Go。但早先的版本,比如ctags5.8,就需要手工添加配置才可以,如果你的ctags不支持go,在~/.ctags文件(没有则新建)中添加如下代码:
--langdef=Go --langmap=Go:.go --regex-Go=/func([ \t]+\([^)]+\))?[ \t]+([a-zA-Z0-9_]+)/\2/f,func/ --regex-Go=/var[ \t]+([a-zA-Z_][a-zA-Z0-9_]+)/\1/v,var/ --regex-Go=/type[ \t]+([a-zA-Z_][a-zA-Z0-9_]+)/\1/t,type/
gutentags插件
ctags因为不是插件,使用时要先手工生成tag的信息,才能被vim使用,不太方便。我们安装一下gutentags插件,他是管理ctags的工具,会自动增量更新ctags,再也不用去手工操作ctags了。
vim-go插件
vim-go插件功能太多了,支持go的各种特性,比如文档显示,格式检查,自动导入等,当然,还包括重要的自动补全。
可以通过金光闪闪的传送门,学习vim-go教程
帮助文档:
:help vim-go
一些常见的vim-go功能:
:GoImports:import 检查。 :GoDef:函数定义。 :GoLint:语法检查。 :GoDoc:Go 标准库文档。 :GoVet:执行 go vet。 :GoBuild:编译。 :GoRun:编译运行。 :GoInstall:安装。 :GoTest:测试。 :GoCoverage:测试覆盖率文件。 :GoErrCheck:Errors 检查。 :GoFiles:显示当前包对应的源文件列表。 :GoDeps:显示当前包的依赖包列表。 :GoImplements:显示当前类型实现的 interface 列表。 :GoRename [to]:将当前光标下的符号替换为 [to]。
Tagbar插件
一个典型的golang开发工具,至少要包含以下三个区域:
- 目录区,显示文件目录
- 代码区,代码编辑器
- 结构区,有些地方叫outline,显示函数,类,变量等声明
目录区 | 代码区 | 结构区
目录区vim自己就支持,通过Ex, Sex,Vex唤起netrw文件目录窗口。结构区得使用Tagbar插件。
帮助文档:
:help tagbar
Tagbar窗口的一些有用快捷操作:
命令 | 描述 |
---|---|
x | 放大/缩小Tagbar窗口; |
s | 项目排序切换; |
+, <kPlus>, zo | 展开折叠; |
-, <kMinus>, zc | 收起折叠; |
o, za | 折叠收起\展开切换; |
*, <kMultiply>, zR | 展开所有折叠; |
=, zM | 收起所有折叠; |
回车 | 转到标签定义处,并且光标跳转到标签定义处; |
p | 转到标签定义处,但光标停留在Tagbar的窗口; |
P | 在预览窗口显示标签; |
<C-N> | 跳到下一个上级标签; |
<C-P> | 跳到上一个上级标签; |
<Space> | 显示标签定义; |
自动补全
vim-go自带omnifunc,安装vim-go之后就可以自动补全,检查下自动补全的支持,正常应该是如下输出:
:verbose setlocal omnifunc? omnifunc=go#complete#Complete Last set from ~/.vim/pack/plugins/start/vim-go/ftplugin/go.vim
在需要自动补全的地方,比如“fmt”, 在fmt的点号之后按CTL+x, CTL+o,就会弹出自动补全对话框,CTL+n或者CTL+p在自动补全对话框中选择需要的内容
回复 cytotec misoprostol 200mcg buy 取消回复