" Vundle插件管理器配置 set nocompatible " 去除VIM一致性,必须 filetype off " 必须 " 设置包括vundle和初始化相关的运行时路径" set rtp+=/home/player/useful/bundle/Vundle.vim call vundle#begin('/home/player/useful/bundle') " 代码类插件 Plugin 'VundleVim/Vundle.vim' " 启用vundle管理插件,必须 Plugin 'Valloric/YouCompleteMe' " 代码补全插件 Plugin 'preservim/nerdtree' " 文件目录树插件 Plugin 'Xuyuanp/nerdtree-git-plugin' " nerdtree git支持 Plugin 'scrooloose/syntastic' " 语法检查插件 Plugin 'github/copilot.vim' " GitHub Copilot插件 Plugin 'voldikss/vim-translator' " 翻译插件 Plugin 'yegappan/taglist' " taglist插件 Plugin 'octol/vim-cpp-enhanced-highlight' " C++语法高亮插件,在原生基础上支持STL等 Plugin 'nathanaelkane/vim-indent-guides' " 缩进线插件 Plugin 'scrooloose/nerdcommenter' " 注释插件 Plugin 'tpope/vim-surround' " test " Plugin 'sainnhe/everforest' " 主题插件 " Plugin 'skywind3000/vim-terminal-help' " vim-terminal-help插件 " Plugin 'Lokaltog/powerline',{'rtp':'powerline/bindings/vim/'} " 状态栏信息插件 call vundle#end() filetype plugin indent on " 加载vim自带和插件相应的语法和文件类型相关脚本,必须 " YouCompleteMe let g:ycm_global_ycm_extra_conf = '/home/player/useful/bundle/YouCompleteMe/.ycm_extra_conf.py' let g:ycm_python_binary_path = '/usr/bin/python' " python路径 let g:ycm_confirm_extra_conf = 0 " 停止提示是否载入本地ycm_extra_conf文件 let g:ycm_use_ultisnips_completer = 1 " 默认载入本地ycm_extra_conf文件 let g:ycm_min_num_of_chars_for_completion = 2 " 从第2个键入字符就开始罗列匹配项 let g:ycm_collect_identifiers_from_comments_and_strings = 1 " 从注释和字符串中收集标识符 let g:ycm_complete_in_comments = 1 " 在注释中也可以补全 let g:ycm_complete_in_strings = 1 " 在字符串中也可以补全 let g:ycm_enable_fuzzy_match = 1 " 开启模糊匹配 let g:ycm_seed_identifiers_with_syntax = 1 " 语法关键字补全 let g:ycm_collect_identifiers_from_tags_files = 1 " 开启 YCM 基于标签引擎 let g:ycm_key_list_select_completion = ['', ''] " 选择第1项的快捷键(默认为) let g:ycm_key_list_previous_completion = ['', ''] " 选择前1项的快捷键(默认为) let g:ycm_autoclose_preview_window_after_completion = 1 " 补全后自动关闭预览窗口 " let g:ycm_key_invoke_completion = '' " 主动补全, 默认为 let g:ycm_key_list_stop_completion = [''] " 停止显示补全列表防影响视野 let g:ycm_semantic_triggers = { \ 'c,cpp,python,java,go,erlang,perl': ['re!\w{2}'], \ 'cs,lua,javascript': ['re!\w{2}'], \ } hi PMenu ctermbg=white ctermfg=NONE guibg=white guifg=NONE hi PMenuSel ctermbg=brown ctermfg=NONE guibg=brown guifg=NONE nnoremap gdec :YcmCompleter GoToDeclaration nnoremap gdef :YcmCompleter GoToDefinition nnoremap gd :YcmCompleter GoToDefinitionElseDeclaration nnoremap gr :YcmCompleter GoToReferences nnoremap gb " NERDTree " 当nerdtree为当前标签页剩余唯一窗口时自动关闭 autocmd bufenter * if(winnr('$') ==1 && exists('b:NERDTree') && b:NERDTree.isTabTree()) | \ call timer_start(1, {-> execute('quit')}) | endif nmap T :NERDTreeToggle " 开关文件目录树,注意shift+i切换是否显示隐藏文件 let g:NERDTreeDirArrowExpandable = '+' let g:NERDTreeDirArrowCollapsible = '-' " 修改树的显示图标 let g:NERDTreeWinPos='left' " 窗口位置 let g:NERDTreeSize=10 " 窗口尺寸 let g:NERDTreeShowLineNumbers=1 " 窗口是否显示行号 let NERDTreeShowHidden=1 " 显示隐藏文件 let NERDTreeIgnore = [ \'\.pyc$', '\.swp', '\.swo', \'\.vscode', '__pycache__' \] " 过滤: 所有指定文件和文件夹不显示 autocmd BufWinEnter * if getcmdwintype() == '' \|silent NERDTreeMirror | endif " 在每个标签页打开相同的文件树 " nerdtree-git-plugin let g:NERDTreeGitStatusIndicatorMapCustom = { \ 'Dirty' :'Dty', \ 'Modified' :'M', \ 'Staged' :'Sta', \ 'Untracked' :'U', \ 'Renamed' :'R', \ 'Unmerged' :'Umg', \ 'Deleted' :'X', \ 'Ignored' :'Ign', \ 'Clean' :'Cl', \ 'Unknown' :'?', \ } let g:NERDTreeGitStatusShowIgnored = 1 " a heavy feature may cost much more time. default: 0 let g:NERDTreeGitStatusUntrackedFilesMode = 'all' " a heavy feature too. default: normal " vim-translator let g:translator_target_lang = 'zh' let g:translator_source_lang = 'auto' let g:translator_default_engines = ['youdao', 'bing', 'google', 'haici'] let g:translator_history_enable = v:true let g:translator_window_type = 'popup' " 可选值为 'popup' 和 'preview',默认为 'popup' " Echo translation in the cmdline nmap t Translate vmap t TranslateV " Display translation in a window nmap w TranslateW vmap w TranslateWV " Close the translation window nmap wc TranslateC " vim-indent-guides let g:indent_guides_enable_on_vim_startup = 1 " 启动时自动开启缩进线 let g:indent_guides_guide_size = 1 " 缩进线宽度 let g:indent_guides_start_level = 2 " 从第二级开始显示缩进线 let g:indent_guides_tab_guides = 0 let g:indent_guides_auto_colors = 0 " 自动颜色 autocmd VimEnter * highlight IndentGuidesOdd ctermbg=gray " 缩进线颜色 autocmd VimEnter * highlight IndentGuidesEven ctermbg=lightgray " 缩进线颜色 " nerdcommenter let g:NERDSpaceDelims = 1 " 在注释符号前后加空格 let g:NERDCompactSexyComs = 1 " 紧凑的注释格式 " 进行Taglist的设置 map tl Tlist let Tlist_Ctags_Cmd='/usr/local/bin/ctags' " 因为我们放在环境变量里,所以可以直接执行 let Tlist_Use_Right_Window=1 " 让窗口显示在右边,0的话就是显示在左边 let Tlist_Show_One_File=1 " 让taglist可以同时展示多个文件的函数列表 let Tlist_File_Fold_Auto_Close=0 " 非当前文件列表折叠隐藏 let Tlist_Exit_OnlyWindow=1 " 当taglist是最后一个分割窗口时,自动推出vim let Tlist_Process_File_Always=1 " 是否一直处理tags.1:处理;0:不处理 let Tlist_Inc_Winwidth=1 " 不是一直实时更新tags,因为没有必要 " 每隔多少秒更新一次tags,如果为0则不更新 let Tlist_Update_Time=5 " 在每个标签页打开相同的函数列表 autocmd BufWinEnter * if getcmdwintype() == '' | silent TlistUpdate | endif " 打开新标签页时自动打开函数列表 autocmd BufWinEnter * if (winnr("$") == 1 && exists("b:NERDTree") \ && b:NERDTree.IsTabTree()) | \silent TlistToggle | endif " syntastic let g:syntastic_python_checkers=['pylint'] let g:syntastic_python_pylint_args=['--disable=C0111,R0903,C0301'] let g:syntastic_asm_checkers=['as86']