本文由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. Injection

    what java EE提供了注入机制,使您的对象能够获取对资源和其他依赖项的引用,而无需直接实例化它们.通过使用将字段标记为注入点的注释之一来装饰字段或方法,可以在类中声明所需的资源和其他依赖项.然 ...

  2. Codeforces 888 简要题解

    文章目录 A题 B题 C题 D题 E题 F题 G题 传送门 A题 传送门 题意简述:给一个数列,问有多少个峰值点(同时比两边都大/小的点) 思路:按照题意模拟. 代码: #include<bit ...

  3. oracle表空间自增

    https://blog.csdn.net/windylfm/article/details/78085669

  4. redis学习-列表(list)常用命令

    redis学习-列表(list)常用命令   lpush:从列表左侧头部添加数据 rpush:从右侧尾部添加数据 lpop:从给左侧头部取出一个元素 rpop:从右侧尾部取出一个元素 lrange:取 ...

  5. Ubuntu18.04安装Guake下拉式终端

    Guake的优势是方便,可以很迅速的唤起与隐藏,已经成为我所需终端的主力. 安装方式:sudo apt-get install guake bug修复:使用时输入exit命令会导致终端卡死系统报错,同 ...

  6. django 如何接收bootstrap-table传送的 ajax数组

    今天在用django传递id的时候,使用 alert(ids)以及console.log("id:",ids),都可以看到是把选中的数据的id打印出来的,用console.log可 ...

  7. Jquery动态添加/删除表格行和列

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  8. 关于Apahce服务器安装中遇到的问题

    在这篇中,将记录一下安装Apache服务器所遇到的一些问题,并简单讲一些Apache和Tomcat的区别: 1>apache安装中遇到的问题: 1.1 Apache目前不再提供编译好的exe安装 ...

  9. 【收藏】JS获取鼠标的X,Y坐标位置

    JS的方法: <html> <head> <meta http-equiv="Content-Type" content="text/htm ...

  10. C++代码审查---审查孙晓宁马踏棋盘谜题程序

    与孙晓宁同学结对审查,其代码地址如下:https://github.com/brunnhilder/-1/blob/master/%E9%A9%AC%E8%B8%8F%E6%A3%8B%E7%9B%9 ...