分享
  1. 首页
  2. 文章

Golang-Vim环境搭建-OSX

u012807459 · · 9571 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

接触Golang之后使用过许多的编辑器比如liteidea,sublime2,idea其中我最钟爱的就是idea了后来偶然有一次使用到了Vagrant搭建虚拟开发环境于是乎不得不用vim进行开发,为了快速开发自然要安装许多便捷的插件.当然安装这些插件不得不说把我恶心到了,虽然说有一部分是我自己的原因.好吧我就先上一张效果图大家先看下vim这个编辑器之神的模样.



有木有相当的狂炫酷霸吊炸天呢哈哈 开始vim的插件安装吧

首先vim的插件安装有两种形式,一直直接自己安装到~/.vim/plugin目录下 另外一种是使用插件管理器Vundle(还有其他的插件管理器)

我先介绍下要安装的种类

1 gmarik/Vundle.vim 这个就是插件管理器

2 'Valloric/YouCompleteMe' 代码自动完成的插件

3 goimports 会自动删除导入import的包

4 godef 可以跳转到函数定义处

5 gocode 这个就是go代码自动完成的插件装了YouCompleteMe之后就不需要再点击ctrl x才出现 而是敲代码时自动出现

6 gotags 这个可以方便你查看源码 也就是上图右边的那一部分

7 NerdTree 这个可以查看目录结构也是很方便的


~/.vimrc是一个关于vim的配置文件(如果你没有自己在~/目录下mkdir ~/.vimrc文件)我会在文章最后贴上我的.vimrc的完整配置

GOBIN目录一定要确保正确必须在你的PATH环境变量当中如果你设置了多个GOPATH那么你一定要确保你所设定的GOBIN目录中有安装插件的可执行文件

vundle安装(git的安装自行Google)

git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim

在.vimrc中添加一下内容则完成了 vundle对vim的插件管理部分 以后需要什么插件通过配置该文件就可以了

filetype off
filetype plugin indent off
set rtp+=$VIM/vimfiles/bundle/vundle/
"rc后的参数表示Vundle自动下载安装插件的位置,为空放在~/.vim/下
call vundle#rc('$VIM/vimfiles/bundle/')
Bundle 'gmarik/vundle'
filetype plugin indent on
syntax on
goimports安装
go get code.google.com/p/go.tools/cmd/goimports

go install code.google.com/p/go.tools/cmd/goimports

github上也有goimports但是上面有一段介绍This project has moved to the official go.tools repo 所以就不适用github的地址

在.vimrc中添加

Bundle 'cespare/vim-golang'

let g:gofmt_command = "goimports"

autocmd BufWritePre *.go :Fmt

重新开启vim,命令模式下执行:BunduleInstall

使用方法: 在命令模式下 输入:Fmt goimports会在后台被自动调用,对当前编辑的文件排版,并在文件中插入/删除相应的import语句

godef安装

go get code.google.com/p/rog-go/exp/cmd/godef
go install code.google.com/p/rog-go/exp/cmd/godef
.vimrc中添加
Bundle 'dgryski/vim-godef'
重新开启vim,命令模式下执行:BunduleInstall

使用方法打开一个go文件 光标指定到相应的函数 在命令模式下输入gd自动跳转到函数定义的位置

YouCompleteMe与gocode的安装安装

YCM的安装过程相当蛋疼一步步来吧

1 vim的版本必须是7.4以上的因为我的是osx10.9自带的vim是7.3的所以必须更新

首先从http://www.vim.org/download.php 下载一个最新版的vim下载下来之后

如果直接make编译一定是有问题很多问题 具体我就不一一描述了

按照下面的过程来编译吧解压源码进入src目录修改src/os_unix.c文件

在
 #if !defined(__APPLE__) && !defined(__TANDEM)
 # define select select_declared_wrong
 #endif
前添加
 #if defined(__APPLE__)
 # include <AvailabilityMacros.h>
#endif
返回src make clean 然后 ./configure --with-features=huge --enable-pythoninterp --enable-rubyinterp 再make

这时候make出来的vim就是可用的了否则无法用于YCM

修改~/.bash_profile文件添加一句话

alias vim="/Applications/Developer/tools/vim74/src/vim"

source一下就可以了 vim --version查看vim版本如果是7.4则没问题了

在.vimrc中添加 Bundle 'Valloric/YouCompleteMe'

然后:BundleInstall

然后在~/.vim/bundle/YouCompleteMe/目录下执行./install.sh

YCM安装好了 接下来安装gocode

go get github.com/nsf/gocode
go install github.com/nsf/gocode
在.vimrc里添加:Bundle 'Blackrush/vim-gocode'

还要记得去github.com/nsf/gocode/vim/ 下面执行 ./update.sh
重新开启vim,命令模式下执行:BunduleInstall

ctags和gotags安装

go get github.com/jstemmer/gotags
go install github.com/jstemmer/gotags

在~/.vimrc中添加以下内容

" go tags
Bundle 'majutsushi/tagbar'
nmap <F8> :TagbarToggle<CR>
let g:tagbar_type_go = {
 \ 'ctagstype' : 'go',
 \ 'kinds' : [
 \ 'p:package',
 \ 'i:imports:1',
 \ 'c:constants',
 \ 'v:variables',
 \ 't:types',
 \ 'n:interfaces',
 \ 'w:fields',
 \ 'e:embedded',
 \ 'm:methods',
 \ 'r:constructor',
 \ 'f:functions'
 \ ],
 \ 'sro' : '.',
 \ 'kind2scope' : {
 \ 't' : 'ctype',
 \ 'n' : 'ntype'
 \ },
 \ 'scope2kind' : {
 \ 'ctype' : 't',
 \ 'ntype' : 'n'
 \ },
 \ 'ctagsbin' : 'gotags',
 \ 'ctagsargs' : '-sort -silent'
 \ }

重新开启vim,命令模式下执行:BunduleInstall

NerdTree安装

直接在.vimrc加入以下内容就可以了

" NerdTree use <C-n>
Bundle 'scrooloose/nerdtree'
""""""""""""""""""""""""""""""
" scrooloose/nerdtree setting
""""""""""""""""""""""""""""""
let NERDTreeWinPos='left'
let NERDTreeWinSize=31
let NERDTreeChDirMode=1
map <C-n> :NERDTreeToggle<CR>
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTreeType") && b:NERDTreeType == "primary") | q | endif

下面贴出我的./vimrc的配置 仅供参考

" UI
: colorscheme desert
set ruler
set number
set background=dark
set t_Co=256
set cursorline
set backspace=indent,eol,start
set fdm=indent
set completeopt=longest,menu
" Golang
" gofmt *.go files after saving
filetype off
filetype plugin indent off
set rtp+=$GOROOT/misc/vim
filetype plugin indent on
filetype plugin on
syntax on
filetype indent on
" Bundle
set nocompatible
let mapleader=","
set rtp+=~/.vim/bundle/vundle/
call vundle#rc()
Bundle 'gmarik/vundle'
Bundle 'Valloric/YouCompleteMe'
Bundle 'cespare/vim-golang'
Bundle 'Blackrush/vim-gocode'
Bundle 'dgryski/vim-godef'
let g:godef_split=2
" no backup
set nobackup
set noswapfile
set nowb
" encoding
set encoding=utf8
" auto, smart indent
set ai
set si
" highlight search
set hlsearch
" open file in the place last modified
autocmd BufReadPost *
			\ if line("'\"")>0&&line("'\"")<=line("$") |
			\exe "normal g'\"" |
			\ endif
" go tags
Bundle 'majutsushi/tagbar'
nmap <F8> :TagbarToggle<CR>
let g:tagbar_type_go = {
 \ 'ctagstype' : 'go',
 \ 'kinds' : [
 \ 'p:package',
 \ 'i:imports:1',
 \ 'c:constants',
 \ 'v:variables',
 \ 't:types',
 \ 'n:interfaces',
 \ 'w:fields',
 \ 'e:embedded',
 \ 'm:methods',
 \ 'r:constructor',
 \ 'f:functions'
 \ ],
 \ 'sro' : '.',
 \ 'kind2scope' : {
 \ 't' : 'ctype',
 \ 'n' : 'ntype'
 \ },
 \ 'scope2kind' : {
 \ 'ctype' : 't',
 \ 'ntype' : 'n'
 \ },
 \ 'ctagsbin' : 'gotags',
 \ 'ctagsargs' : '-sort -silent'
 \ }
autocmd BufWritePre *.go :Fmt
let g:gofmt_command = "goimports"
" NerdTree use <C-n>
Bundle 'scrooloose/nerdtree'
""""""""""""""""""""""""""""""
" scrooloose/nerdtree setting
""""""""""""""""""""""""""""""
let NERDTreeWinPos='left'
let NERDTreeWinSize=31
let NERDTreeChDirMode=1
map <C-n> :NERDTreeToggle<CR>
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTreeType") &&b:NERDTreeType == "primary") | q | endif



有疑问加站长微信联系(非本文作者)

本文来自:CSDN博客

感谢作者:u012807459

查看原文:Golang-Vim环境搭建-OSX

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
9571 次点击
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏