本文由Librant发表

如果说在Linux环境下,什么编辑器最好用,如果我说是VIM,估计会有一大部分人嗤之以鼻,怎么可能。VIM可能是他用过众多编辑器最难用的一个。在我司用的是云虚拟机,说实话吧,这里吐槽一下,是真的卡,没开几个网页,打开几个软件就卡的不要不要的,后来码代码的时候,能用Linux机器我就尽量使用Linux环境,如果读者正好也是一名Gopher的话,那我就强烈建议你使用VIM,Vim-go是当前使用最为广泛的用于搭建Golang开发环境的vim插件。好了,废话不多说,看我搭建好的界面吧。

图 Go-Vim界面

看到这个界面,读者是不是不认识了,这就对了,是不是觉得很炫酷,其实Vim有很多的插件,可以把Vim打造的非常棒,等读者查阅相关资料,清楚Vim的各种参数的时候,就可以根据自己的喜好,搭建不同风格的Go开发环境啦。So废话不多说,开整。(建议先看完《跟我学Docker》的第一章部分)

1.1 环境准备

​ 能成功从gitHub拉取代码,Go编译器安装完成之后,就可以在搭建Go-Vim啦。首先是在当前用户的HOME目录下创建 .vim 目录和 .vimrc 文件:

librant@ubuntu:~$ mkdir .vim

librant@ubuntu:~$ touch .vimrc

创建完成之后,进入到 .vim 中,下载插件 Vim 的插件管理器bundle:

librant@ubuntu:~/.vim$ mkdir bundle

然后进入到 bundle 目录中,安装Vundle.vim:

librant@ubuntu:~/.vim/bundle$ git clone git clone https://github.com/VundleVim/Vundle.vim.git

下载完成之后,会在当前目录下生成 Vundle.vim 目录

同样进入到 bundle 目录中,安装Vim-go:

librant@ubuntu:~/.vim/bundle$ git clone https://github.com/fatih/vim-go.git

下载完成之后,会在当前目录下生成 vim-go 目录

1.2 插件安装

~/(用户$HOME) 目录下已经有 .vimrc文件就不需要再创建了。(" 为注释部分)。

1.2.1 安装Vundle.vim

在 .vimrc 文件中添加如下配置:

set nocompatible

filetype off

set rtp+=~/.vim/bundle/Vundle.vim

call vundle#begin()

Plugin 'gmarik/Vundle.vim'

call vundle#end()

filetype plugin indent on

保存后,退出。

1.2.2 安装Vim-go

继续编辑 .vimrc文件,在call vundle#begin()和call vundle#end()之间再添加如下配置:

Plugin 'fatih/vim-go'

保存后,重新打开 vim 编辑器,在命令行的模式输入:PluginInstall

:PluginInstall

执行之后会在左侧出现需要安装的插件列表,右侧是.vimrc文件。如图1-2-2所示:

图 1-2-2 Vim插件安装界面

刚执行时,左下角会出现 Processing的过程,需要稍微等一会儿,这是在下载代码,安装完成之后,左下角将出现Done!的单词,表示已经安装完成。

1.2.3 安装 go.tools Binaries

​ Vim-go安装中需要使用到Go的相关的二进制工具。由于历史的原因,在google上的工具是无法自行下载安装的,在gitHub上的工具是可以安装成功的。

首先打开 .vimrc 文件,切换到命令行模式,执行 GoInstallBinaries 命令自行安装。

:GoInstallBinaries

等待 Vim-go依赖的工具自动安装,如果安装成功后,会在 $GOPATH/bin 目录下生成。安装完成后如图1-2-3所示:

图 1-3-2 vim-go依赖的命令文件

由于有些命令文件是无法自动安装完成,这就需要手动进行安装啦。首先对比目录,看缺少哪些命令没有安装完成,然后去gitHub上搜索,找到对应的命令源码之后,使用git clone 下载到本地,然后使用 go install命令进行安装即可。前面已经讲解过如何安装啦,这里就不再赘述。

相关工具的gitHub路径:

golint: https://github.com/golang/lint.git

gocode: https://github.com/nsf/gocode.git

errcheck: https://github.com/kisielk/errcheck.git

gotags: https://github.com/jstemmer/gotags.git

(缺少什么工具,基本都可以找到的,这里就不一一列举了)

1.3 VIM主题颜色

​ Vim的主题颜色保存在 /usr/share/vim/vim80/colors 目录下保存,如果目录下没有的主题,就需要自己进行下载了。下载到此目录的颜色主题,将可以被所有用户使用,如果只需要在当前用户下使用,可以将下载的主题放在 ~/.vim/colors 目录下即可。个人比较喜欢molokai主题风格,下面就简单介绍如何下载这个主题吧。

​ 1)在gitHub上搜索 molokai 主题,找到主题的git仓库 tomasr/molokai

​ 2)进入到 .vim目录下,使用git clone 下载主题

librant@ubuntu:~/.vim$ git clone https://github.com/tomasr/molokai.git

​ 3)下载完成之后,拷贝 molokai/colors/molokai.vim 文件到 ~/.vim/colors 目录下

​ 4)配置 .vimrc 文件,在文件中红添加如下信息:

set t_Co=256

colorscheme molokai

let g:molokai_original = 1

let g:rehash256 = 1

需要配置其他的主题,只需要设置相应的主题名称。

1.4 其他插件安装

1.4.1 SirVer/ultisnips

​ UltiSnips是Vim的代码片段工具,它只是一个引擎,它需要和vim-snippets搭配使用。vim-snippets预定义了几十种语言常用的代码模板,位于 ~/.vim/bundle/vim-snippets/UltiSnips/,UltiSnips 有一套自己的代码模板语法规则。

在 .vimrc中的配置如下:

Plugin 'honza/vim-snippets'

Plugin 'SirVer/ultisnips'

"插入模式下直接通过键来触发UltiSnips的代码块补全

let g:UltiSnipsExpandTrigger=""

"弹出UltiSnips的可用列表,由于不常用, 所以这里设置成了特殊的映射

let g:UltiSnipsListSnippets=""

"跳转的到下一个代码块可编辑区

let g:UltiSnipsJumpForwardTrigger=""

"跳转到上一个代码块可编辑区

let g:UltiSnipsJumpBackwardTrigger=""

增加位置如Go-vim的位置一致,安装过程也是类似的。

gitHub的代码路径如下所示:

honza/vim-snippets: https://github.com/honza/vim-snippets.git

SirVer/ultisnips: https://github.com/SirVer/ultisnips.git

1.4.2 scrooloose/nerdtree

​ NERDTree的作用就是列出当前路径的目录树,一般IDE都是有的。可以方便的浏览项目的总体的目录结构和创建删除重命名文件或文件名。

​ 在 .vimrc中的配置如下:

Plugin 'scrooloose/nerdtree'

" 设置NerdTree

map :NERDTreeMirror

map :NERDTreeToggle

进入到 vim 后可以按 F7 显示和隐藏 NERDTree区域。

gitHub的代码路径如下所示:

scrooloose/nerdtree: https://github.com/scrooloose/nerdtree.git

1.4.3 majutsushi/tagbar

​ tagbar可以将正在编辑的文件生成一个大纲视图,包含接口/方法/变量等, 可以选中快速跳转到目标位置, 编辑大文件特别有用。

由于tagbar是基于ctags,需要先安装ctags:

root@ubuntu:/# apt-get install ctags

​ 在 .vimrc中的配置如下:

"F9触发,设置宽度为30

let g:tagbar_width = 30

nmap :TagbarToggle

"开启自动预览(随着光标在标签上的移动,顶部会出现一个实时的预览窗口)

let g:tagbar_autopreview = 1

"关闭排序,即按标签本身在文件中的位置排序

let g:tagbar_sort = 0

进入到 vim 后可以按 F9 开启和关闭tagbar功能 。

gitHub的代码路径如下所示:

majutsushi/tagbar: https://github.com/majutsushi/tagbar.git

1.4.4 Raimondi/delimitMate

​ delimitMate是自动补全引号(单引号/双引号/反引号), 括号(()[]{})的插件。

​ 在 .vimrc中的配置如下:

Plugin 'Raimondi/delimitMate'

gitHub的代码路径如下所示:

Raimondi/delimitMate: https://github.com/Raimondi/delimitMate.git

GO语言调试利器——dlv

vim创建程序文件自动添加头部注释

附录:VIM参数设置解析

  1. set nocompatible:不要使用vi的键盘模式,而是vim自己的
  2. set number:显示行号
  3. set showcmd:输入的命令显示出来
  4. syntax on:开启语法高亮
  5. filetype on:检测文件类型

最好用的编辑器之一:Vim-Go环境搭建的更多相关文章

  1. 我的vim开发环境搭建:C/C++/Go,持续更新中

    懒得在github博客上折腾评论功能,先借用博客园推广下,虽然好像也没什么用. 我的vim开发环境搭建(1): 准备工作 我的vim开发环境搭建(2): 常用的vim插件 我的vim开发环境搭建(3) ...

  2. Linux-- 文件编辑器 vi/vim(2)

    多文件编辑 vi 可以用来打开多个文件,如下: 进入编辑界面以后,输入 :n 可以切换到下一个文本,:N 可以切换到上一个文本,:files 列出目前这个 vi 打开的所有文件,举例如下: 切换到下一 ...

  3. 在PHPstorm编辑器中配置git环境

    在phpstorm编辑器中配置git环境,使得编程人员从git仓库中提交代码,克隆代码,,,更佳便利快捷,有利于提高项目的质量和效率 工具/原料   phpstorm编辑器,git客户端 win7或w ...

  4. Linux文本编辑器-vi/vim

    vi是Linux命令行界面下的文字编辑器,vim是vi的增强版(Vi IMproved),完全兼容 可以理解成普通的txt文本与word文档之间的差距. 注:还有一款全屏编辑器是nano,可以了解下 ...

  5. 文本编辑器 vi/vim 的使用

    文本编辑器 vi/vim 一.启动与退出 1. vim 2. vim 文件名(可以是存在的文件,也可以是不在的文件) 3.退出 :q   或者:x 在非“插入”模式二.vi/vim的工作模式 1.正常 ...

  6. Golang开发环境搭建-Vim篇

    一.一个干净的环境 找个干净的基础环境,方便确认每个搭建步骤后的效果: Ubuntu 14.04 x86_64 vim version 7.4.52 go version go1.4beta1 lin ...

  7. Linux-- 文件编辑器 vi/vim(1)

    初识 vi/vim 文本编辑器 1.vi 和 vim 相同,都是文本编辑器,在 vi 模式下可以查看文本,编辑文本,是 Linux 最常用的命令,vi 模式下分为三部分,第一部分一般模式,在一般模式中 ...

  8. Vim Python3环境打造

    Vim Python3环境打造 tags: Vim Python3 参考网址:Vim与Python真乃天作之合:打造强大的Python开发环境 分割布局 sv 纵向分割 vs 横向分割 ctrl+W ...

  9. Vim的环境设定与记录

    vim 会主动将曾经做过的行为记录下来,记录在文件   ~/.viminfo,好方便下次作业. 更改  /etc/vimrc配置操作环境 vim的环境设定参数 :set nu :set  nonu 设 ...

随机推荐

  1. (PMP)第4章-----项目整合管理

    4.1 制定项目章程 输入 工具与技术 输出 1.商业文件 (商业论证,效益管理计划) 1.专家判断 1.项目章程 2.协议 2.数据收集 (头脑风暴,焦点小组,访谈) 2.假设日志 3.事业环境因素 ...

  2. HTTP二、HTTP请求处理过程的七个步骤

      HTTP02 HTTP请求处理过程的七个步骤     1.web服务处理步骤 web服务的处理过程可总结为七个步骤:   1)发起请求:客户端向服务器端发起连接请求,建立”三次握手“: 2)接收请 ...

  3. ubuntu安装苹果Windows以及微软雅黑consolas字体

    ubuntu安装苹果Windows以及微软雅黑consolas字体 ubuntu安装苹果字体 wget http://drive.noobslab.com/data/Mac/macfonts.zip ...

  4. Exp3 免杀原理与实践 20154320 李超

    基础知识 如何检测出恶意代码 基于特征码的检测:分析指令的统计特性.代码的结构特性等.如果一个可执行文件(或其他运行的库.脚本等)拥有一般恶意代码所通有的特征(开启后门等)则被认为是恶意代码 启发式恶 ...

  5. JSHFJK师德师风幅度十分时尚大方JSHFJK

    sdjfhjksd{104411661166112205880477047710881111099909771088104411111155116605880533055505330500051104 ...

  6. RabbitMQ 使用主题进行消息分发

    在上篇文章RabbitMQ消息队列(五):Routing 消息路由 中,我们实现了一个简单的日志系统.Consumer可以监听不同severity的log.但是,这也是它之所以叫做简单日志系统的原因, ...

  7. CDN随笔

    CDN的理解:(1)CDN (内容分发网络)加速用户获取数据的 系统(2)部署在离用户最近的网络节点上(3)命中CDN 不需要访问后端服务器(4)互联网公司自己搭建或租用

  8. Openvswitch手册(5): VLAN and Bonding

    我们这一节来看Port 一般来说一个Port就是一个Interface,当然也有一个Port对应多个Interface的情况,成为Bond VLAN Configuration Port的一个重要的方 ...

  9. Flume 示例

    1.Syslog Tcp Source sysylog通过配置一个端口,flume能够监控这个端口的数据.如果通往这个端口发送数据可以被flume接收到.可以通过socket发送. #配置文件:sys ...

  10. Dubbo 源码分析 - 集群容错之 Directory

    1. 简介 前面文章分析了服务的导出与引用过程,从本篇文章开始,我将开始分析 Dubbo 集群容错方面的源码.这部分源码包含四个部分,分别是服务目录 Directory.服务路由 Router.集群 ...