Golang-Vim环境搭建-OSX
来源:互联网 发布:网络大电影拍摄 编辑:程序博客网 时间:2024/05/22 02:10
接触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 offfiletype plugin indent offset rtp+=$VIM/vimfiles/bundle/vundle/"rc后的参数表示Vundle自动下载安装插件的位置,为空放在~/.vim/下call vundle#rc('$VIM/vimfiles/bundle/')Bundle 'gmarik/vundle'filetype plugin indent onsyntax ongoimports安装
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 tagsBundle '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=31let NERDTreeChDirMode=1map <C-n> :NERDTreeToggle<CR>autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTreeType") && b:NERDTreeType == "primary") | q | endif
下面贴出我的./vimrc的配置 仅供参考
" UI: colorscheme desertset rulerset numberset background=darkset t_Co=256set cursorlineset backspace=indent,eol,startset fdm=indentset completeopt=longest,menu" Golang" gofmt *.go files after savingfiletype offfiletype plugin indent offset rtp+=$GOROOT/misc/vimfiletype plugin indent onfiletype plugin onsyntax onfiletype indent on" Bundleset nocompatiblelet 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 backupset nobackupset noswapfileset nowb" encodingset encoding=utf8" auto, smart indentset aiset si" highlight searchset hlsearch" open file in the place last modifiedautocmd BufReadPost *\ if line("'\"")>0&&line("'\"")<=line("$") |\exe "normal g'\"" |\ endif" go tagsBundle '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 :Fmtlet g:gofmt_command = "goimports"" NerdTree use <C-n>Bundle 'scrooloose/nerdtree'""""""""""""""""""""""""""""""" scrooloose/nerdtree setting""""""""""""""""""""""""""""""let NERDTreeWinPos='left'let NERDTreeWinSize=31let NERDTreeChDirMode=1map <C-n> :NERDTreeToggle<CR>autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTreeType") &&b:NERDTreeType == "primary") | q | endif
- Golang-Vim环境搭建-OSX
- golang vim ide 环境搭建
- Vim搭建Golang开发环境
- Golang开发环境搭建-Vim篇
- Golang开发环境搭建-Vim篇
- Golang开发环境搭建-Vim篇
- Golang开发环境搭建-Vim篇
- Centos 搭建golang环境,vim高亮go关键字设置
- windows 下搭建golang开发环境,安装vim插件
- Mac OSX下golang开发环境配置
- golang 环境搭建
- Golang环境搭建
- golang开发环境搭建
- golang开发环境搭建
- golang开发环境搭建
- Ubuntu Golang环境搭建
- 搭建golang开发环境
- GoLang环境搭建
- Oracle SecureFiles
- 解决Deprecated: Assigning the return value of new by reference
- python学习笔记3--输入输出、eval函数
- java设计模式整理
- 谈一下响应式网站的设计原则
- Golang-Vim环境搭建-OSX
- makefile.am,automake(参考libxml2)
- Android底部菜单,使用fragment实现
- Android组件之间的信使——Intent
- 下载时文件名中文乱码的解决方案
- Visio画UML用例图
- 通用makefile
- Training--管理activity的生命周期
- activity的几个知识点