395 lines
11 KiB
VimL
395 lines
11 KiB
VimL
"
|
||
" __ __
|
||
" __ __/_/___ ___ ____ / /_ _______
|
||
" \ \ / / / __ `__ \/ __ \/ / / / / ___/
|
||
" \ V / / / / / / / /_/ / / /_/ (__ )
|
||
" \_/_/_/ /_/ /_/ ,___/_/\____/____/
|
||
" /_/
|
||
"
|
||
"
|
||
" Author: chxuan <787280310@qq.com>
|
||
" Repository: https://github.com/chxuan/vimplus
|
||
" Create Date: 2016-05-01
|
||
" License: MIT
|
||
|
||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||
" 通用设置
|
||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||
" 定义快捷键的前缀,即<leader>
|
||
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/cppfun'
|
||
Plug 'chxuan/change-colorscheme'
|
||
Plug 'Yggdroot/indentLine'
|
||
Plug 'Yggdroot/LeaderF'
|
||
Plug 'easymotion/vim-easymotion'
|
||
Plug 'haya14busa/incsearch.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 '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 'kana/vim-textobj-user'
|
||
Plug 'kana/vim-textobj-indent'
|
||
Plug 'kana/vim-textobj-syntax'
|
||
Plug 'kana/vim-textobj-function'
|
||
Plug 'sgur/vim-textobj-parameter'
|
||
Plug 'Shougo/echodoc.vim'
|
||
|
||
call plug#end()
|
||
|
||
" load vim default plugin
|
||
runtime macros/matchit.vim
|
||
|
||
" 编辑vimrc文件
|
||
noremap <leader>e :edit $MYVIMRC<cr>
|
||
|
||
" 查看help文件
|
||
noremap <leader>h :edit ~/.vimplus/help.md<cr>
|
||
|
||
" 重新加载vimrc文件
|
||
noremap <leader>s :source $MYVIMRC<cr>
|
||
|
||
" cppfun
|
||
noremap <leader>y :CopyFun<cr>
|
||
noremap <leader>p :PasteFun<cr>
|
||
|
||
" change-colorscheme
|
||
noremap <silent> <F10> :NextColorScheme<cr>
|
||
inoremap <silent> <F10> <esc> :NextColorScheme<cr>
|
||
noremap <silent> <F9> :PreviousColorScheme<cr>
|
||
inoremap <silent> <F9> <esc> :PreviousColorScheme<cr>
|
||
|
||
" nerdtree
|
||
map <leader>n :NERDTreeToggle<cr>
|
||
imap <leader>n <esc> :NERDTreeToggle<cr>
|
||
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)\<enter>"
|
||
let s:licenseTag = s:licenseTag . "For free\<enter>"
|
||
let s:licenseTag = s:licenseTag . "All right reserved\<enter>"
|
||
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 <leader>u :YcmCompleter GoToDeclaration<cr>
|
||
nnoremap <leader>i :YcmCompleter GoToDefinition<cr>
|
||
nnoremap <leader>o :YcmCompleter GoToInclude<cr>
|
||
nmap <F5> :YcmDiags<cr>
|
||
|
||
" 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 <silent> <leader>a :A<cr>
|
||
|
||
" 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 <leader>t :TagbarToggle<cr>
|
||
imap <leader>t <esc> :TagbarToggle<cr>
|
||
|
||
" 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 <C-N> :bn<cr>
|
||
nnoremap <C-P> :bp<cr>
|
||
|
||
" vim-devicons
|
||
set guifont=Droid\ Sans\ Mono\ for\ Powerline\ Nerd\ Font\ Complete\ 12
|
||
|
||
" incsearch.vim
|
||
map / <Plug>(incsearch-forward)
|
||
map ? <Plug>(incsearch-backward)
|
||
map g/ <Plug>(incsearch-stay)
|
||
|
||
" markdown
|
||
let g:mkdp_path_to_chrome = "firefox"
|
||
nmap <silent> <F7> <Plug>MarkdownPreview
|
||
imap <silent> <F7> <Plug>MarkdownPreview
|
||
nmap <silent> <F8> <Plug>StopMarkdownPreview
|
||
imap <silent> <F8> <Plug>StopMarkdownPreview
|
||
|
||
" vim-easymotion
|
||
let g:EasyMotion_smartcase = 1
|
||
map <leader>w <Plug>(easymotion-bd-w)
|
||
nmap <leader>w <Plug>(easymotion-overwin-w)
|
||
|
||
" indentLine
|
||
let g:indentLine_enabled=0
|
||
nmap <leader><leader>il :IndentLinesToggle<cr>
|
||
|
||
" 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" : "?"
|
||
\ }
|
||
|
||
" LeaderF
|
||
nmap <leader>f :LeaderfFile ~<cr>
|
||
|
||
" echodoc.vim
|
||
let g:echodoc_enable_at_startup = 1
|
||
|
||
" 个性化
|
||
if filereadable(expand($HOME . '/.vimrc.local'))
|
||
source $HOME/.vimrc.local
|
||
endif
|