============改用vim-plug
注意如果ymc youcompleteme安装不上在mac上 请升级或者 克隆旧分支 本人mac 10.14 在2020.12.25下载的包 c++ 编译已不支持。所以升级mac 系统11 完事安装xcode-select
brew建议国内源加速 升级vim版本 >=8.1
brew unlink python # 看提示有可能--force
brew install python # 安装python3.9
brew link python
Give another go at force removing the $ brewed version of perl $ brew uninstall --force perl Then cleanup any older versions and clear the brew cache $ brew cleanup -s perl Remove any dead symlinks $ brew cleanup --prune-prefix Then try reinstalling perl $ brew install perl
vimrc vim-plug自行安装
配置
" 设置vim-plug管理的插件安装位置
call plug#begin(\'~/.vim/bundle\')
" 下面就是一些插件的例子.
" 插件必须装在 plug#begin/end这两行命令之间.
" 对于在github上面的插件, 我们可以用以下方法添加, 只需要添加`用户名/插件名称`就行
Plug \'tpope/vim-fugitive\'
" 对于在http://vim-scripts.org/vim/scripts.html下的插件, 我们直接添加插件名称就行
" Plug \'L9\'
" 对于不是github也不是vim-scripts的插件, 则需要用完整路径
Plug \'git://git.wincent.com/command-t.git\'
" 本地或者你自己的插件
"Plug \'file:///home/gmarik/path/to/plugin\'
"
Plug \'scrooloose/nerdtree\'
Plug \'git://github.com/vim-airline/vim-airline\'
Plug \'jiangmiao/auto-pairs\'
Plug \'Valloric/YouCompleteMe\'
Plug \'kien/ctrlp.vim\'
Plug \'scrooloose/syntastic\'
Plug \'nvie/vim-flake8\'
Plug \'klen/python-mode\'
" github上被star 2300次的vim的配置建议参考:https://github.com/amix/vimrc/tree/master/vimrcs,建议弄明白了再复制过来。
Plug \'mattn/emmet-vim\'
Plug \'godlygeek/tabular\'
" 也是代码不全
Plug \'Shougo/neocomplcache.vim\'
Plug \'jelera/vim-javascript-syntax\'
Plug \'terryma/vim-multiple-cursors\'
Plug \'tpope/vim-commentary\'
Plug \'jiangmiao/auto-pairs\'
" 所有的插件都需要安装在这条命令之前
call plug#end() " 必须的
set encoding=utf-8
"语法高亮
syntax enable
syntax on
"显示行号
set number
"显示光标所在位置的行号和列号
set ruler
set wrap "自动折行
set shiftwidth=4
set tabstop=4
set softtabstop=4
set expandtab "将tab替换为相应数量空格
set smartindent
set backspace=2
"设置取消备份 禁止临时文件生成
"set nobackup
"set noswapfile
"设置匹配模式 类似当输入一个左括号时会匹配相应的那个右括号
set showmatch
set laststatus=2 "命令行为两行
set fenc=utf-8 "文件编码
set mouse=a "启用鼠标
set ignorecase "忽略大小写
"set cursorline "突出显示当前行
"set cursorcolumn "突出显示当前列
set fdm=marker
"jj退出insert模式
"inoremap <C-j> <ESC>
inoremap jk <ESC>
"nmap ,v "+p
"vmap ,c "+y
"nmap ,c "+y
vmap ,c :w !pbcopy<CR><CR>
nmap ,c :w !pbcopy<CR><CR>
nmap ,v :r !pbpaste<CR><CR>
"设置vundle
set nocompatible " be iMproved
" filetype off " required!
filetype plugin indent on " required
" 有时候需要从vim中复制一些代码出去,所以vim必须支持能够将代码复制到系统粘贴板上,要实现上述需求,只需要在.vimrc中添加如下配置参数。
set clipboard=unnamed
" html5 settings
let g:html5_event_handler_attributes_complete = 0
" emment settings
let g:user_emmet_mode= \'n\' "only enable normal mode functions.
let g:user_emmet_mode= \'inv\' "enable all functions, which is equal to
let g:user_emmet_mode= \'a\' "enable all function in all mode.
let g:emmet_html5 = 0
let g:user_emmet_install_global = 0
autocmd FileType html,css EmmetInstall
" let g:user_emmet_leader_key=\'<C-Z>\'
" let g:user_emmet_expandabbr_key=\'<Tab>\'
" neocompletecache settings
let g:acp_enableAtStartup = 0
let g:neocomplcache_enable_at_startup = 1
let g:neocomplcache_enable_smart_case = 1
let g:neocomplcache_min_syntax_length = 3
let g:neocomplcache_lock_buffer_name_pattern = \'\*ku\*\'
inoremap <expr ><C -g > neocomplcache#undo_completion ( )
inoremap <expr ><C -l > neocomplcache#complete_common_string ( )
inoremap <expr ><C -h > neocomplcache#smart_close_popup ( ) . "\<C-h>"
inoremap <expr ><BS > neocomplcache#smart_close_popup ( ) . "\<C-h>"
inoremap <expr ><C -y > neocomplcache#close_popup ( )
inoremap <expr ><C -e > neocomplcache#cancel_popup ( )
autocmd FileType css setlocal omnifunc=csscomplete#CompleteCSS
autocmd FileType html,markdown setlocal omnifunc=htmlcomplete#CompleteTags
autocmd FileType javascript setlocal omnifunc=javascriptcomplete#CompleteJS
autocmd FileType python setlocal omnifunc=pythoncomplete#Complete
autocmd FileType xml setlocal omnifunc=xmlcomplete#CompleteTags
" ctrlp settings
let g:ctrlp_map = \'<c-p>\'
let g:ctrlp_cmd = \'CtrlP\'
let g:ctrlp_working_path_mode = \'ra\'
"set wildignore += */tmp /*, *. so, *.swp, *.zip " Linux/MacOSX
let g:ctrlp_user_command = \'find %s -type f\' " MacOSX/Linux
" NERD tree
let NERDChristmasTree=0
let NERDTreeWinSize=35
let NERDTreeChDirMode=2
let NERDTreeIgnore=[\'\~$\', \'\.pyc$\', \'\.swp$\']
let NERDTreeShowBookmarks=1
let NERDTreeWinPos="left"
let NERDTreeShowHidden=1
" Automatically open a NERDTree if no files where specified
autocmd vimenter * if !argc() | NERDTree | endif
" Close vim if the only window left open is a NERDTree
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTreeType") && b:NERDTreeType == "primary") | q | endif
" Open a NERDTree
nmap <F5> :NERDTreeToggle<cr>
au vimenter * NERDTree " 开启vim的时候默认开启NERDTree
" *********************************************
" " 分割布局相关
" " *********************************************
" set splitbelow
" set splitright
" "快捷键,ctrl+l切换到左边布局,ctrl+h切换到右边布局
" "ctrl+k切换到上面布局,ctrl+j切换到下面布局
nnoremap <C-J> <C-W><C-J>
nnoremap <C-K> <C-W><C-K>
nnoremap <C-L> <C-W><C-L>
nnoremap <C-H> <C-W><C-H>
" 在.vimrc中添加下面语句可以打开airline顶部的tab, 用来显示buffer信息
let g:airline#extensions#tabline#enabled = 1
let g:airline#extensions#tabline#buffer_nr_show = 1
" *********************************************
" YCM插件相关
" *********************************************
let g:ycm_autoclose_preview_window_after_completion=1
" 跳转到定义处
map <leader>g :YcmCompleter GoToDefinitionElseDeclaration<CR>
" 默认tab、s-tab和自动补全冲突
let g:ycm_key_list_select_completion = [\'<TAB>\', \'<c-n>\', \'<Down>\']
let g:ycm_key_list_previous_completion = [\'<S-TAB>\', \'<c-p>\', \'<Up>\']
let g:ycm_auto_trigger = 1
" *********************************************
" ctrlp
" *********************************************
let g:ctrlp_map = \'<c-p>\'
let g:ctrlp_cmd = \'CtrlP\'
" 设置过滤不进行查找的后缀名
let g:ctrlp_custom_ignore = \'\v[\/]\.(git|hg|svn|pyc)$\'
" *********************************************
" python代码风格PEP8
" *********************************************
au BufNewFile,BufRead *.py set tabstop=4 |set softtabstop=4|set shiftwidth=4|set textwidth=79|set expandtab|set autoindent|set fileformat=unix
au BufNewFile,BufRead *.js, *.html, *.css set tabstop=2|set softtabstop=2|set shiftwidth=2
" ctags settings
let Tlist_Ctags_Cmd = \'/usr/local/bin/ctags\' "这里比较重要了,设置ctags的位置,不是指向MacOS自带的那个,而是我们用homebrew安装的那个,Centos下配置注销这行即可。
" taglist settings
let Tlist_Use_Right_Window = 1 "让taglist窗口出现在Vim的右边
let Tlist_File_Fold_Auto_Close = 1 "当同时显示多个文件中的tag时,设置为1,可使taglist只显示当前文件tag,其它文件的tag都被折叠起来。
let Tlist_Show_One_File = 1 "只显示一个文件中的tag,默认为显示多个
let Tlist_Sort_Type = \'name\' "Tag的排序规则,以名字排序。默认是以在文件中出现的顺序排序
let Tlist_GainFocus_On_ToggleOpen = 1 "Taglist窗口打开时,立刻切换为有焦点状态
let Tlist_Exit_OnlyWindow = 1 "如果taglist窗口是最后一个窗口,则退出vim
let Tlist_WinWidth = 32 "设置窗体宽度为32,可以根据自己喜好设置
map <silent> <F9> :TlistToggle <CR>
" let Tlist_Ctags_Cmd="/usr/local/bin/ctags"
"let Tlist_Show_One_File=1
" let Tlist_Exit_OnlyWindow=1
" let Tlist_Use_Right_Window=1
" Python-mode
" Activate rope
" Keys: 按键:
" K Show python docs 显示Python文档
" <Ctrl-Space> Rope autocomplete 使用Rope进行自动补全
" <Ctrl-c>g Rope goto definition 跳转到定义处
" <Ctrl-c>d Rope show documentation 显示文档
" <Ctrl-c>f Rope find occurrences 寻找该对象出现的地方
" <Leader>b Set, unset breakpoint (g:pymode_breakpoint enabled) 断点
" [[ Jump on previous class or function (normal, visual, operator modes)
" ]] Jump on next class or function (normal, visual, operator modes)
" 跳转到前一个/后一个类或函数
" [M Jump on previous class or method (normal, visual, operator modes)
" ]M Jump on next class or method (normal, visual, operator modes)
" 跳转到前一个/后一个类或方法
let g:pymode_rope = 1
" Documentation 显示文档
" let g:pymode_doc = 1
let g:pymode_doc_key = \'K\'
"Linting 代码查错,=1为启用
let g:pymode_lint = 1
let g:pymode_lint_checker = "pyflakes,pep8"
" Auto check on save
let g:pymode_lint_write = 1
" Support virtualenv
let g:pymode_virtualenv = 1
" Enable breakpoints plugin
let g:pymode_breakpoint = 1
let g:pymode_breakpoint_bind = \'<leader>b\'
" syntax highlighting 高亮形式
let g:pymode_syntax = 1
let g:pymode_syntax_all = 1
let g:pymode_syntax_indent_errors = g:pymode_syntax_all
let g:pymode_syntax_space_errors = g:pymode_syntax_all
" Don\'t autofold code 禁用自动代码折叠
let g:pymode_folding = 0
"vim-commentary
"为python和shell等添加注释
"autocmd FileType python,shell,coffee set commentstring=#\ %s
"修改注释风格
"autocmd FileType java,c,cpp set commentstring=//\ %s
"使用方法如下
" gcc 注释当前行(普通模式)
" gc 可视模式下,注释当前选中的部分
" gcu 撤销上一次注释的部分,可以是一行也可以是多行
" gcgc 撤销注释当前行和邻近的上下两行
=================================下面是旧的配置
转 ↓
记得刚装ubuntu那会,对vim和terminal爱不释手,装各种插件DIY。换到mac上后接触到SublimeText和VScode,就再也没有去理会vim了。前几天看了点《程序员修炼之道》,里面说『最好精通一种编辑器,并将其用于所有编辑任务。如果不坚持使用一种编辑器,可能会面临现代的巴别特大混乱』
于是,又开始思考到底该选择谁作为自己的主编辑器,想了想目前学的主要是Python和C++偏服务器方向,而且以后工作中也是跟服务器打交道,既然偏服务器那就注定跟图像界面无缘了,所以就是没得选了!不过,还是出于ubuntu环境下vim的易用性,扩展性等都比较符合我爱折腾的性格。最终!我决定用vim!好吧,既然决定了,那就风雨无阻,开始吧。
系统环境
看网上一大堆vim的教程,大都不把自己的系统环境贴上去,以至于让读者无法理解,在配置过程中会出现版本问题。所以,我先把我的系统环境贴上来,让读者能够在遇到问题的时候注意到版本问题。
- macos 10.12.2
- vim 7.3
- homebrew
- osx Terminal
- zsh 5.0.8
网上很多选用iterm2代替Terminal,还有macVim代替vim等,本人一贯认为,既然系统自带的不难用,没大毛病,何必要多装一堆东西呢?弄得系统乱糟糟的。
升级vim
mac下自带的vim是7.3版本的,而vim最强大的补全插件You Complete Me是要求vim7.4+,所以要配置vim环境的首要任务就是安装最新版本的vim。以前在ubuntu下用vim的时候,当时最新版的是7.4,现在不知不觉中更新到8.0了,真是一大喜讯啊,还说什么呢?赶紧去尝鲜咯。
更新vim最方便的方法就是采用homebrew安装。在终端下输入如下指令:
|
1
2
|
/* 安装最新版的vim,并覆盖系统的vim */
brew install vim –with-lua –with-override-system-vi
|
安装过程中的信息如下:
|
1
2
3
4
5
6
7
8
|
==> Using the sandbox
==> Downloading https://github.com/vim/vim/archive/v8.0.0041.tar.gz
==> Downloading from https://codeload.github.com/vim/vim/tar.gz/v8.0.0041
######################################################################## 100.0%
==> ./configure --prefix=/usr/local --mandir=/usr/local/Cellar/vim/8.0.0041/share/man --enable-multibyte --with-tlib=ncurses --enable-cscope --with-compiledby=Homebrew --enable-luainterp --enable-perlinterp --enable-pythoninterp --enable-
==> make
==> make install prefix=/usr/local/Cellar/vim/8.0.0041 STRIP=/usr/bin/true
|