安装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 cmake3.其它配置
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



