栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

mac 上配置vim go开发环境

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

mac 上配置vim go开发环境

前置:安装好go开发环境 这个自己先装好 1.升级vim到最新版本

安装homebrew (如已安装,请忽略)

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

安装最新版本的vim 

brew install vim 

升级完之后发现vim路径为/usr/local/Cellar/vim/8.2.3600/

则修改 ~/.bash_profile添加如下内容

 alias vim='/usr/local/Cellar/vim/8.2.3600/bin/vim'

输入 vim --version |grep python 查看 vim是否支持python3 如果是出现 +python3,则表示可以支持python3了升级工作完成

 2.vim插件安装

1. clone vundle.vim.git

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

2. 配置插件,打开文件 ~/.vimrc 输入以下内容

set nocompatible              " be iMproved, required
filetype off                  " required

" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()

" let Vundle manage Vundle, required
Plugin 'VundleVim/Vundle.vim'

Plugin 'fatih/vim-go'

Plugin 'majutsushi/tagbar'

Plugin 'scrooloose/nerdtree'

Plugin 'Valloric/YouCompleteMe'

" All of your Plugins must be added before the following line
call vundle#end()            " required
filetype plugin indent on    " required

配置完成后在vim 命令行模式下执行:

:PluginInstall

插件会自动下载安装,看见上面显示 Finishing ... Done 的内容,插件安装成功 

3.安装vim-go

安装好vim-go插件后,vim-go本身依赖一些包,在vim命令行模式下执行:

:GoInstallBinaries

4.编译 YouCompleteMe

安装完YouCompleteMe后,还需要单独编译才能运行YouaCompleteMe:

 cd ~/.vim/bundle/YouCompleteMe
./install.py --clang-completer --gocode-completer --tern-completer

如果报Cmake的错误,则安装cmake

brew install cmake
3.其它配置

vim-go插件

let g:go_fmt_command = "goimports" " 格式化将默认的 gofmt 替换
let g:go_autodetect_gopath = 1
let g:go_list_type = "quickfix"
let g:go_version_warning = 1
let g:go_highlight_types = 1
let g:go_highlight_fields = 1
let g:go_highlight_functions = 1
let g:go_highlight_function_calls = 1
let g:go_highlight_operators = 1
let g:go_highlight_extra_types = 1
let g:go_highlight_methods = 1
let g:go_highlight_generate_tags = 1
let g:godef_split=2

NERDTree插件

" 打开和关闭NERDTree快捷键
map  :NERDTreeToggle
" 设置宽度
" let NERDTreeWinSize=25

tagbar插件

nmap  :TagbarToggle
let g:tagbar_width=25
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'
 }

我的所有配置:

set nocompatible              " be iMproved, required
filetype off                  " required
let g:go_fmt_command = "goimports" " 格式化将默认的 gofmt 替换
let g:go_autodetect_gopath = 1
let g:go_list_type = "quickfix"
let g:go_version_warning = 1
let g:go_highlight_types = 1
let g:go_highlight_fields = 1
let g:go_highlight_functions = 1
let g:go_highlight_function_calls = 1
let g:go_highlight_operators = 1
let g:go_highlight_extra_types = 1
let g:go_highlight_methods = 1
let g:go_highlight_generate_tags = 1
let g:godef_split=2
" 打开和关闭NERDTree快捷键
map  :NERDTreeToggle
" 设置宽度
" let NERDTreeWinSize=25
nmap  :TagbarToggle
let g:tagbar_width=25
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'
 }
" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()

" let Vundle manage Vundle, required
Plugin 'VundleVim/Vundle.vim'

Plugin 'fatih/vim-go'

Plugin 'majutsushi/tagbar'

Plugin 'scrooloose/nerdtree'

Plugin 'Valloric/YouCompleteMe'
"配色方案
Plugin 'jnurmine/Zenburn'
Plugin 'altercation/vim-colors-solarized'
Plugin 'tomasr/molokai'
"代码折叠插件
Plugin 'tmhedberg/SimpylFold'
"自动缩进
Plugin 'vim-scripts/indentpython.vim'
"在vim的normal模式下搜索文件
Plugin 'kien/ctrlp.vim'
"Powerline状态栏
Plugin 'Lokaltog/powerline', {'rtp': 'powerline/bindings/vim/'}
" All of your Plugins must be added before the following line
call vundle#end()            " required
filetype plugin indent on    " required
"设置显示powerline
set laststatus=2
"设置分割窗口
set splitbelow
set splitright
"设置窗口移动快捷键
nnoremap  
nnoremap  
nnoremap  
nnoremap  
"设置按F2启动NerdTree
map  :NERDTreeToggle
"youcompleteme  默认tab  s-tab 和自动补全冲突
""let g:ycm_key_list_select_completion=['']
let g:ycm_key_list_select_completion = ['']
"let g:ycm_key_list_previous_completion=['']
let g:ycm_key_list_previous_completion = ['']
"关闭加载.ycm_extra_conf.py提示
let g:ycm_confirm_extra_conf=0
" 开启 YCM 基于标签引擎
let g:ycm_collect_identifiers_from_tags_files=1
" 从第2个键入字符就开始罗列匹配项
let g:ycm_min_num_of_chars_for_completion=2
" 禁止缓存匹配项,每次都重新生成匹配项
let g:ycm_cache_omnifunc=0
" 语法关键字补全
let g:ycm_seed_identifiers_with_syntax=1
"force recomile with syntastic
nnoremap  :YcmForceCompileAndDiagnostics
"nnoremap lo :lopen "open locationlist
"nnoremap lc :lclose    "close locationlist
inoremap  
"在注释输入中也能补全
let g:ycm_complete_in_comments = 1
"在字符串输入中也能补全
let g:ycm_complete_in_strings = 1
"注释和字符串中的文字也会被收入补全
let g:ycm_collect_identifiers_from_comments_and_strings = 0
"let g:ycm_autoclose_preview_window_after_completion=1

"隐藏目录树种的.pyc文件
let NERDTreeIgnore=['.pyc$', '~$'] "ignore files in NERDTree

"设置主题颜色,以及设置快捷键F5
set t_Co=256
set background=dark
if has('gui_running')
  colorscheme solarized
else
  colorscheme molokai
  "let g:molokai_original=1
endif
call togglebg#map("")

if &diff
    colors blue
endif
"开启代码折叠
set foldmethod=indent
set foldlevel=99
"设置快捷键为空格
nnoremap  za
"显示折叠代码的文档字符串
let g:SimpylFold_docstring_preview=1

"python代码缩进PEP8风格
au BufNewFile,BufRead *.py,*.pyw set tabstop=4
au BufNewFile,BufRead *.py,*.pyw set softtabstop=4
au BufNewFile,BufRead *.py,*.pyw set shiftwidth=4
au BufNewFile,BufRead *.py,*.pyw set expandtab
au BufNewFile,BufRead *.py,*.pyw set textwidth=79
au BufNewFile,BufRead *.py,*.pyw set autoindent
au BufNewFile,BufRead *.py,*.pyw set fileformat=unix

"对其他文件类型设置au命令
au BufNewFile,BufRead *.js, *.html, *.css set tabstop=2
au BufNewFile,BufRead *.js, *.html, *.css set softtabstop=2
au BufNewFile,BufRead *.js, *.html, *.css set shiftwidth=2
"高亮显示行伟不必要的空白字符
highlight Whitespace ctermbg=red guibg=red
au BufRead,BufNewFile *.py,*.pyw,*.c,*.h match Whitespace /s+$ +/
"设置行号显示
set nu

"设置utf-8编码
set encoding=utf-8

let python_highlight_all=1
syntax on
filetype plugin indent on
set backspace=indent,eol,start
set cursorline
set history=1000
set fileencodings=utf-8,gb18030,utf-16,big5
set hlsearch
set clipboard=unnamed
set expandtab
set softtabstop=4
set tabstop=4
set shiftwidth=4

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/906745.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号