" plugin 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 'scrooloose/nerdtree' "Plugin 'msanders/snipmate.vim' Plugin 'mattn/emmet-vim' "################### 自动补全 ################### " 代码自动补全 "迄今为止用到的最好的自动VIM自动补全插件 "重启 :YcmRestartServer Bundle 'Valloric/YouCompleteMe' "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 = [''] let g:ycm_complete_in_comments = 1 "在注释输入中也能补全 let g:ycm_complete_in_strings = 1 "在字符串输入中也能补全 let g:ycm_use_ultisnips_completer = 1 "提示UltiSnips let g:ycm_collect_identifiers_from_comments_and_strings = 1 "注释和字符串中的文字也会被收入补全 let g:ycm_collect_identifiers_from_tags_files = 1 " let g:ycm_autoclose_preview_window_after_completion = 1 " let g:ycm_autoclose_preview_window_after_insertion = 1 " 跳转到定义处, 分屏打开 let g:ycm_goto_buffer_command = 'horizontal-split' " nnoremap jd :YcmCompleter GoToDefinition nnoremap jd :YcmCompleter GoToDefinitionElseDeclaration nnoremap gd :YcmCompleter GoToDeclaration "let g:ycm_seed_identifiers_with_syntax=1 "语言关键字补全, 不过python关键字都很短,所以,需要的自己打开 " 引入,可以补全系统,以及python的第三方包 针对新老版本YCM做了兼容 " old version if !empty(glob("~/.vim/bundle/YouCompleteMe/cpp/ycm/.ycm_extra_conf.py")) let g:ycm_global_ycm_extra_conf = "~/.vim/bundle/YouCompleteMe/cpp/ycm/.ycm_extra_conf.py" endif " new version if !empty(glob("~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py")) let g:ycm_global_ycm_extra_conf = "~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py" endif " 直接触发自动补全 insert模式下 " let g:ycm_key_invoke_completion = '' " 黑名单,不启用 let g:ycm_filetype_blacklist = { \ 'tagbar' : 1, \ 'gitcommit' : 1, \} " 代码片段快速插入 (snippets中,是代码片段资源,需要学习) Bundle 'SirVer/ultisnips' " Snippets are separated from the engine. Add this if you want them: Bundle 'honza/vim-snippets' let g:UltiSnipsExpandTrigger = "" let g:UltiSnipsJumpForwardTrigger = "" let g:UltiSnipsJumpBackwardTrigger = "" let g:UltiSnipsSnippetDirectories = ['UltiSnips'] let g:UltiSnipsSnippetsDir = '~/.vim/UltiSnips' " 定义存放代码片段的文件夹 .vim/UltiSnips下,使用自定义和默认的,将会的到全局,有冲突的会提示 " 进入对应filetype的snippets进行编辑 map us :UltiSnipsEdit " ctrl+j/k 进行选择 func! g:JInYCM() if pumvisible() return "\" else return "\" endif endfunction func! g:KInYCM() if pumvisible() return "\" else return "\" endif endfunction inoremap =g:JInYCM() au BufEnter,BufRead * exec "inoremap " . g:UltiSnipsJumpBackwordTrigger . " =g:KInYCM()" let g:UltiSnipsJumpBackwordTrigger = "" " 多语言语法检查 Bundle 'scrooloose/syntastic' let g:syntastic_error_symbol='>>' let g:syntastic_warning_symbol='>' let g:syntastic_check_on_open=1 let g:syntastic_enable_highlighting = 0 "let g:syntastic_python_checker="flake8,pyflakes,pep8,pylint" let g:syntastic_python_checkers=['pyflakes'] " 使用pyflakes,速度比pylint快 let g:syntastic_javascript_checkers = ['jsl', 'jshint'] let g:syntastic_html_checkers=['tidy', 'jshint'] highlight SyntasticErrorSign guifg=white guibg=black " 智能补全 Plugin 'davidhalter/jedi-vim' "快捷键看文档 https://github.com/davidhalter/jedi-vim ":help jedi-vim "let g:jedi#goto_command = "d" "let g:jedi#goto_assignments_command = "g" "let g:jedi#goto_definitions_command = "" "let g:jedi#documentation_command = "K" "let g:jedi#usages_command = "n" "let g:jedi#completions_command = "" "let g:jedi#rename_command = "r"" " "################### 显示增强-主题 ###################" " ""主题 solarized Bundle 'altercation/vim-colors-solarized' "let g:solarized_termcolors=256 "let g:solarized_termtrans=1 "let g:solarized_contrast="normal" "let g:solarized_visibility="normal" " ""主题 molokai "Bundle 'tomasr/molokai' "let g:molokai_original = 1 " " All of your Plugins must be added before the following line call vundle#end() " required filetype plugin indent on " required " end plugin " map :NERDTreeToggle "