打造Go的IDE

用Go做开发有几个月了,其间尝试过Sublime Text, Atom, LiteIDE,总感觉还是不如当初用Vim来得顺手。于是,我又开始折腾了一把,把开发环境切换回了Vim。这次,主要给大家分享一下折腾的心得,以及如何把Vim,Tmux,Zsh结合起来,打造一个功能强大的IDE环境。

工具清单

话说,工欲善其事,必先利其器。我们需要如下几个工具的支持:

  • Vim: 呃,这不是废话么,必须的啊……不然怎么写代码呢……
  • 各种Vim插件: 后面会列出清单
  • Tmux: 一个功能强大的终端复用软件,不过,为啥要用这个工具呢?稍后为你揭晓答案……
  • Zsh: Bash的完美替代品

注:这次所有的环境都基于MacOS搭建,在Linux系统下亦可,至于windows环境嘛,估计会比较折腾,我没试过……

IDE预览

先来看看IDE的最终效果吧,最终折腾出来是这个模样:

搭建步骤

第一步,是安装zsh以及oh-my-zsh,其实Mac默认貌似已经自带了zsh,可以通过命令:

1
more /etc/shells

查看zsh是否已经安装。oh-my-zsh,其实是一个用来配置和管理zsh的一个十分方便的工具,有了zsh,就有了强大的补全功能,再加上各种插件,比如git插件,可以方便的查看当前git仓库下的状态,十分方便。zsh已经是替换默认bash的最佳选择了。

第二步,是安装vim以及Tmux。这里不得不提一下Tmux,强大的终端复用工具,根据Tmux的设计理念,可以在终端里面开启和管理多个session,并且,每一个session可以保持状态,在断开后可以重新连接。而一个session里面,还可以划分出多个window,每个window里面,可以划分出多个panel。感觉这才是Tmux强大的地方,我们的IDE完全可以基于Tmux来构建了。

IDE的构成

现在可以仔细查看一下我们的IDE截图,其实整个IDE是在Tmux的session里面构建的。IDE的大部分内容,是被上半部分的Vim占据了。其实这个Vim,是嵌套在当前一个叫“revel”窗口的Panel里面的。这个叫”revel“的window,被划分成了三部分,上半部分是Vim。下半部分又被划分成了两个Panel,左边是用来运行当前的Revel项目,并查看程序输出信息的,方便调试。右边的Panel是一个zsh的窗口,当前目录是revel这个项目的目录,方便进行一些文件拷贝,添加,删除的操作,顺便还可以用Git命令来进行版本控制。

上面的Vim,又安装了各种插件,比如NERDTree,TagBar,方便进行项目中文件的跳转,以及当前文件中方法之间的跳转。中间的就是主要的编辑器,用来写代码的地方了。其实Vim还用到了其他各种插件,下面会详细介绍。

除此之外,还可以在Tmux开多个window,就像图片下面的1,2,3,4,其实打开了4个window,一个用来编写代码,一个用来查询MySQL,另外还两个window用来干别的事……

Vim插件列表

列出部分用到的Vim插件,供参考:

  • Ack 全文搜索插件,可以在当前打开的项目中进行源码的全文搜索,并可以在搜索结果中方便的切换和打开源码文件,十分方便。
  • NERDTree Vim中的文件管理器,方便编辑文件,创建目录,删除和修改文件等等……
  • NERDTreeCommenter 方便的用来注释代码的插件
  • TagBar 查看当前代码文件中的变量和函数列表的插件,可以切换和跳转到代码中对应的变量和函数的位置
  • CtrlP 不可缺少的快速跳转插件,它可以快速的帮助我们找到项目中的文件。在vim normal模式下,按下ctrl+p,然后输入你要寻找的文件就行了。
  • AutoPairs 自动补全括号的插件,包括小括号,中括号,以及花括号,可以提升编码效率
  • Surround 快速给词加环绕符号,例如单引号/双引号/括号/成对标签等的插件
  • Vim-Airline Vim状态栏插件,包括显示行号,列号,文件类型,文件名,以及Git状态
  • EasyMotion 在当前文件中快速移动光标到指定查找位置的插件,十分方便和高效
  • NeoComplete 自动补全插件,写代码必备,有了这个插件,就有了IDE的感觉
  • Vim-Startify Vim启动首屏自定义插件,让你的Vim启动后显示别具一格的首屏样式
  • Vim-Indent-Guides 显示代码对齐的引导条
  • Accelerated-Smooth-Scroll 顾名思义,让Ctrl+F,Ctrl+B的滚屏来得更顺滑一些……
  • YouDao-Translater Vim中的有道翻译插件
  • Matrix-ScreenSaver Vim中的黑客帝国屏幕保护插件,很酷很炫
  • vim-go 搞Go开发必备的插件,集成了很多Go的相关功能

配置文件下载

暂时介绍到这里吧,这里放出我的Zsh,Tmux,Vim的配置文件,供大家参考,方便搭建自己的IDE: https://github.com/TimothyYe/mydotfiles

支持原创技术分享,据说打赏我的人,都找到了女朋友!