最好用的编辑器之一:Vim-Go环境搭建
本文由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参数设置解析
- set nocompatible:不要使用vi的键盘模式,而是vim自己的
- set number:显示行号
- set showcmd:输入的命令显示出来
- syntax on:开启语法高亮
- filetype on:检测文件类型
最好用的编辑器之一:Vim-Go环境搭建的更多相关文章
- 我的vim开发环境搭建:C/C++/Go,持续更新中
懒得在github博客上折腾评论功能,先借用博客园推广下,虽然好像也没什么用. 我的vim开发环境搭建(1): 准备工作 我的vim开发环境搭建(2): 常用的vim插件 我的vim开发环境搭建(3) ...
- Linux-- 文件编辑器 vi/vim(2)
多文件编辑 vi 可以用来打开多个文件,如下: 进入编辑界面以后,输入 :n 可以切换到下一个文本,:N 可以切换到上一个文本,:files 列出目前这个 vi 打开的所有文件,举例如下: 切换到下一 ...
- 在PHPstorm编辑器中配置git环境
在phpstorm编辑器中配置git环境,使得编程人员从git仓库中提交代码,克隆代码,,,更佳便利快捷,有利于提高项目的质量和效率 工具/原料 phpstorm编辑器,git客户端 win7或w ...
- Linux文本编辑器-vi/vim
vi是Linux命令行界面下的文字编辑器,vim是vi的增强版(Vi IMproved),完全兼容 可以理解成普通的txt文本与word文档之间的差距. 注:还有一款全屏编辑器是nano,可以了解下 ...
- 文本编辑器 vi/vim 的使用
文本编辑器 vi/vim 一.启动与退出 1. vim 2. vim 文件名(可以是存在的文件,也可以是不在的文件) 3.退出 :q 或者:x 在非“插入”模式二.vi/vim的工作模式 1.正常 ...
- Golang开发环境搭建-Vim篇
一.一个干净的环境 找个干净的基础环境,方便确认每个搭建步骤后的效果: Ubuntu 14.04 x86_64 vim version 7.4.52 go version go1.4beta1 lin ...
- Linux-- 文件编辑器 vi/vim(1)
初识 vi/vim 文本编辑器 1.vi 和 vim 相同,都是文本编辑器,在 vi 模式下可以查看文本,编辑文本,是 Linux 最常用的命令,vi 模式下分为三部分,第一部分一般模式,在一般模式中 ...
- Vim Python3环境打造
Vim Python3环境打造 tags: Vim Python3 参考网址:Vim与Python真乃天作之合:打造强大的Python开发环境 分割布局 sv 纵向分割 vs 横向分割 ctrl+W ...
- Vim的环境设定与记录
vim 会主动将曾经做过的行为记录下来,记录在文件 ~/.viminfo,好方便下次作业. 更改 /etc/vimrc配置操作环境 vim的环境设定参数 :set nu :set nonu 设 ...
随机推荐
- jquery学习总结24-36
一.jquery的自定义事件 1.自定义事件不能通过eventName()来添加,只能通过on来绑定 2.自定义事件需要通过trigger(自动触发)来进行触发 二.jauery事件命名空间 1.事件 ...
- C++智能指针 auto_ptr、shared_ptr、weak_ptr和unique_ptr
手写代码是理解C++的最好办法,以几个例子说明C++四个智能指针的用法,转载请注明出处. 一.auto_ptr auto_ptr这是C++98标准下的智能指针,现在常常已经被C++标准的其他智能指针取 ...
- eclipse中补齐代码的快捷键
Shift+Alt+L比如我输入new TextView(this);按这个快捷键能自动生成TextView textView=new TextView(this); 例子: 代码将会变成如下:
- 所有子节点、Procedure、MySQL
在Oracle 中我们知道有一个 Hierarchical Queries 通过CONNECT BY 我们可以方便的查了所有当前节点下的所有子节点.但很遗憾,在MySQL的目前版本中还没有对应的功能. ...
- Exp4 恶意代码分析 ——20164325王晓蕊
1.实践目标 监控你自己系统的运行状态,看有没有可疑的程序在运行. 分析一个恶意软件,就分析Exp2或Exp3中生成后门软件:分析工具尽量使用原生指令或sysinternals,systracer套件 ...
- Python 基础整理(未完)
数据类型和变量: 整数:Python可以处理任意大小的整数,当然包括负整数,在程序中的表示方法和数学上的写法一模一样,例如:1,100,-8080,0,等等. 计算机由于使用二进制,所以,有时候用十六 ...
- 【红色警报】XXE 高危漏洞将大面积影响微信支付安全,可能导致系统沦陷,请升级你的系统!
今天,微信支付发布了一则紧急通知: 尊敬的微信支付商户: 您的系统在接受微信支付XML格式的商户回调通知(支付成功通知.退款成功通知.委托代扣签约/解约/扣款通知.车主解约通知)时,如未正确地进行安全 ...
- Java 判断两个对象是否相等
一.使用 == 与 equals == : 它的作用是判断两个对象的地址是不是相等.即,判断两个对象是不是同一个对象.(基本数据类型==比较的是值,引用数据类型==比较的是内存地址) equals() ...
- 吴恩达机器学习笔记22-正则化逻辑回归模型(Regularized Logistic Regression)
针对逻辑回归问题,我们在之前的课程已经学习过两种优化算法:我们首先学习了使用梯度下降法来优化代价函数
- JavaScript使用浏览器内置XMLHttpRequest对象执行Ajax请求
所有现代浏览器均支持 XMLHttpRequest 对象(IE5 和 IE6 使用 ActiveXObject).XMLHttpRequest 用于在后台与服务器交换数据.这意味着可以在不重新加载整个 ...