" " __ __ " __ __/_/___ ___ ____ / /_ _______ " \ \ / / / __ `__ \/ __ \/ / / / / ___/ " \ V / / / / / / / /_/ / / /_/ (__ ) " \_/_/_/ /_/ /_/ ,___/_/\____/____/ " /_/ " " " Author: chxuan <787280310@qq.com> " Source: https://github.com/chxuan/vimplus """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " 通用设置 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " 定义快捷键的前缀,即 let mapleader = "," " 开启文件类型侦测 filetype on " 根据侦测到的不同类型加载对应的插件 filetype plugin on " 不让vim发出讨厌的滴滴声 set noerrorbells " 不要使用vi的键盘模式,使用vim自己的 set nocompatible " 去掉输入错误的提示 set noeb " 告诉我们文件的哪一行被改变过 set report=0 set selection=exclusive set selectmode=mouse,key """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " 显示设置 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " 开启语法高亮功能 syntax enable " 允许指定语法高亮配色方案替换默认方案 syntax on " 开启256色支持,默认是8色 set t_Co=256 " 命令行显示输入的命令 set showcmd " 命令行的高度 set cmdheight=2 " 命令行显示vim当前模式 set showmode " 总是显示状态栏 set laststatus=2 " 开启行号显示 set number " 显示光标当前位置 set ruler " 高亮显示当前行/列 set cursorline " set cursorcolumn " 用浅色高亮当前行 autocmd InsertEnter * se cul " 禁止显示菜单和工具条 set guioptions-=T set guioptions-=m " 禁止显示滚动条 set guioptions-=l set guioptions-=L set guioptions-=r set guioptions-=R " 字符间插入的像素行数目 set linespace=0 " 在被分割的窗口间显示空白,便于阅读 set fillchars=vert:\ ,stl:\ ,stlnc:\ " 高亮显示匹配的括号 set showmatch " 匹配括号高亮的时间(单位是十分之一秒) set matchtime=1 " 光标移动到buffer的顶部和底部时保持3行的距离 set scrolloff=3 " 带有如下符号的单词不要被换行分割 set iskeyword+=_,$,@,%,#,- " 允许backspace和光标键跨越行边界 set whichwrap+=<,>,h,l " 允许光标出现在最后一个字符的后面 set virtualedit=block,onemore """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " 代码缩进和排版 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " 设置自动缩进 set autoindent " 设置使用C/C++语言的自动缩进方式 set cindent " 设置C/C++语言的具体缩进方式 set cinoptions=g0,:0,N-s,(0 " 智能的选择对其方式 set smartindent " 自适应不同语言的智能缩进 filetype indent on " 将制表符扩展为空格 set expandtab " 设置编辑时制表符占用空格数 set tabstop=4 " 设置格式化时制表符占用空格数 set shiftwidth=4 " 让vim把连续数量的空格视为一个制表符 set softtabstop=4 " 在行和段开始处使用制表符 set smarttab " 历史文件中需要记录的行数 set history=1000 " 禁止折行 set nowrap " 使用回格键正常处理indent,eol,start等 set backspace=2 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " 搜索设置 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " 高亮显示搜索结果 set hlsearch " 开启实时搜索功能 set incsearch " 搜索时大小写不敏感 set ignorecase " 设置魔术 set magic """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " 代码折叠 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " 基于缩进或语法进行代码折叠 " set foldmethod=indent set foldmethod=syntax " 启动vim时关闭折叠代码 set nofoldenable """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " 代码补全 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " vim自身命名行模式智能补全 set wildmenu " 补全内容不以分割子窗口形式出现,只显示补全列表 set completeopt-=preview """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " 缓存设置 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " 禁止生成临时文件 set nobackup set noswapfile " 文件在vim之外修改过,自动重新读入 set autoread " 设置自动保存 set autowrite " 在处理未保存或只读文件的时候,弹出确认 set confirm """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " 编码设置 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" set langmenu=zh_CN.UTF-8 " 帮助系统设置为中文 set helplang=cn " 设置编码格式 set termencoding=utf-8 set encoding=utf8 " 使用utf-8或gbk打开文件 set fileencodings=utf8,ucs-bom,gbk,cp936,gb2312,gb18030 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " 插件列表 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" call plug#begin('~/.vim/plugged') Plug 'vim-scripts/L9' Plug 'chxuan/change-colorscheme' Plug 'Yggdroot/indentLine' Plug 'easymotion/vim-easymotion' Plug 'haya14busa/incsearch.vim' Plug 'wsdjeg/FlyGrep.vim' Plug 'iamcco/mathjax-support-for-mkdp' Plug 'iamcco/markdown-preview.vim' Plug 'jiangmiao/auto-pairs' Plug 'scrooloose/nerdtree' Plug 'tiagofumo/vim-nerdtree-syntax-highlight' Plug 'Xuyuanp/nerdtree-git-plugin' Plug 'rstacruz/sparkup', {'rtp': 'vim/'} Plug 'rkulla/pydiction' Plug 'Valloric/MatchTagAlways' Plug 'Valloric/YouCompleteMe' Plug 'docunext/closetag.vim' Plug 'godlygeek/tabular' Plug 'tpope/vim-fugitive' Plug 'tpope/vim-surround' Plug 'tpope/vim-commentary' Plug 'tpope/vim-repeat' Plug 'tpope/vim-endwise' Plug 'ctrlpvim/ctrlp.vim' Plug 'majutsushi/tagbar' Plug 'octol/vim-cpp-enhanced-highlight' Plug 'vim-airline/vim-airline' Plug 'vim-airline/vim-airline-themes' Plug 'vim-scripts/a.vim' Plug 'vim-scripts/DoxygenToolkit.vim' Plug 'vim-scripts/txt.vim' Plug 'ryanoasis/vim-devicons' Plug 'gorodinskiy/vim-coloresque' Plug 'will133/vim-dirdiff' Plug 'mhinz/vim-startify' Plug 'junegunn/vim-slash' Plug 'joshdick/onedark.vim' Plug 'kana/vim-textobj-user' Plug 'kana/vim-textobj-indent' Plug 'kana/vim-textobj-syntax' Plug 'kana/vim-textobj-function' Plug 'sgur/vim-textobj-parameter' call plug#end() " load vim default plugin runtime macros/matchit.vim " change-colorscheme map :NextColorScheme imap :NextColorScheme map :PreviousColorScheme imap :PreviousColorScheme " nerdtree map n :NERDTreeToggle imap n :NERDTreeToggle let g:NERDTreeFileExtensionHighlightFullName = 1 let g:NERDTreeExactMatchHighlightFullName = 1 let g:NERDTreePatternMatchHighlightFullName = 1 let g:NERDTreeHighlightFolders = 1 " enables folder icon highlighting using exact match let g:NERDTreeHighlightFoldersFullName = 1 " highlights the folder name let g:NERDTreeDirArrowExpandable='♥' let g:NERDTreeDirArrowCollapsible='♥' " 关闭窗口时自动关闭NerdTree autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif " Doxygen let g:DoxygenToolkit_authorName="chxuan, 787280310@qq.com" let s:licenseTag = "Copyright(C)\" let s:licenseTag = s:licenseTag . "For free\" let s:licenseTag = s:licenseTag . "All right reserved\" let g:DoxygenToolkit_licenseTag = s:licenseTag let g:DoxygenToolkit_briefTag_funcName="yes" let g:doxygen_enhanced_color=1 let g:DoxygenToolkit_commentType="Qt" " YCM let g:ycm_confirm_extra_conf = 0 let g:ycm_error_symbol = '>>' let g:ycm_warning_symbol = '>*' let g:ycm_seed_identifiers_with_syntax = 1 let g:ycm_complete_in_comments = 1 let g:ycm_complete_in_strings = 1 "let g:ycm_cache_omnifunc = 0 nnoremap u :YcmCompleter GoToDeclaration nnoremap i :YcmCompleter GoToDefinition nnoremap o :YcmCompleter GoToInclude nmap :YcmDiags " ctags set tags+=/usr/include/tags set tags+=~/.vim/systags set tags+=~/.vim/x86_64-linux-gnu-systags let g:ycm_collect_identifiers_from_tags_files = 1 " let g:ycm_semantic_triggers = {} let g:ycm_semantic_triggers = { \ 'c' : ['->', '.','re![_a-zA-z0-9]'], \ 'objc' : ['->', '.', 're!\[[_a-zA-Z]+\w*\s', 're!^\s*[^\W\d]\w*\s', \ 're!\[.*\]\s'], \ 'ocaml' : ['.', '#'], \ 'cpp,objcpp' : ['->', '.', '::','re![_a-zA-Z0-9]'], \ 'perl' : ['->'], \ 'php' : ['->', '::'], \ 'cs,java,javascript,typescript,d,python,perl6,scala,vb,elixir,go' : ['.'], \ 'ruby' : ['.', '::'], \ 'lua' : ['.', ':'], \ 'erlang' : [':'], \ } let g:ycm_semantic_triggers.c = ['->', '.', ' ', '(', '[', '&',']'] " a.vim: .h -> .cpp or .cpp -> .h nnoremap a :A " tagbar " 用系统默认路径 " let g:tagbar_ctags_bin = '/usr/bin/ctags' "linux " let g:tagbar_ctags_bin = '/usr/local/bin/ctags' "mac let g:tagbar_width = 30 map t :TagbarToggle imap t :TagbarToggle " colorscheme set background=dark colorscheme onedark let g:onedark_termcolors=256 " let g:solarized_termcolors=256 " let g:sorlized_termtrans=1 " colorscheme solarized " cpp_class_scope_highlight let g:cpp_class_scope_highlight = 1 let g:cpp_experimental_template_highlight = 1 let c_no_curly_error = 1 " airline let g:airline_theme="onedark" " let g:airline_theme="luna" let g:airline_powerline_fonts = 1 "let g:airline_section_b = '%{strftime("%c")}' "let g:airline_section_y = 'BN: %{bufnr("%")}' let g:airline#extensions#tabline#enabled = 1 " let g:airline#extensions#tabline#left_sep = ' ' " let g:airline#extensions#tabline#left_alt_sep = '|' if !exists('g:airline_symbols') let g:airline_symbols = {} endif let g:airline_left_sep = '' let g:airline_left_alt_sep = '' let g:airline_right_sep = '' let g:airline_right_alt_sep = '' nnoremap :bn nnoremap :bp " ctrlp let g:ctrlp_map = '' let g:ctrlp_cmd = ':CtrlP' let g:ctrlp_working_path_mode = '0' set wildignore+=*/tmp/*,*.so,*.swp,*.zip " MacOSX/Linux " vim-devicons set guifont=Droid\ Sans\ Mono\ for\ Powerline\ Nerd\ Font\ Complete\ 12 " incsearch.vim map / (incsearch-forward) map ? (incsearch-backward) map g/ (incsearch-stay) " markdown let g:mkdp_path_to_chrome = "firefox" nmap MarkdownPreview imap MarkdownPreview nmap StopMarkdownPreview imap StopMarkdownPreview " vim-easymotion let g:EasyMotion_smartcase = 1 map w (easymotion-bd-w) nmap w (easymotion-overwin-w) " indentLine let g:indentLine_enabled=0 nmap il :IndentLinesToggle " pydiction let g:pydiction_location='~/.vim/plugged/pydiction/complete-dict' let g:pydiction_menu_height=10 " nerdtree-git-plugin let g:NERDTreeIndicatorMapCustom = { \ "Modified" : "✹", \ "Staged" : "✚", \ "Untracked" : "✭", \ "Renamed" : "➜", \ "Unmerged" : "═", \ "Deleted" : "✖", \ "Dirty" : "✗", \ "Clean" : "✔︎", \ 'Ignored' : '☒', \ "Unknown" : "?" \ } " 个性化 if filereadable(expand($HOME . '/.vimrc.local')) source $HOME/.vimrc.local endif