" 显示行数
set number
" 语法高亮
syntax enable
" 设置背景色调
set background=dark
" 设置主题
colorscheme solarized
" 开启文件类型侦察
filetype plugin on
" 去掉讨厌的有关vi一致性模式,避免以前版本的一些bug和局限
set nocompatible
" set backspace
" " indent: 想用退格键将字段缩进的删掉,必须设置这个选项
" " eol: 如果插入模式下在行开头,想通过退格键合并两行,需要设置eol。
" " start:要想删除此次插入前的输入,需设置这个。
set backspace=indent,eol,start
" 按一个tab显示的空格数
set tabstop=4
" 编辑模式的时候按退格键的时候退回缩进的长度
set softtabstop=4
" 表示每一级缩进的长度,设置成与softtabstop一样即可
set shiftwidth=4
" 当设置成 expandtab 时,缩进用空格来表示,noexpandtab 则是用制表符表示一个缩进。
set noexpandtab
" 设置字符编码
set encoding=utf-8
""" YCM Setrtings Start
" c/c++语言补全需要clangd路径
let g:ycm_clangd_binary_path = "E:/Vim/plug_dir/YouCompleteMe/third_party/ycmd/third_party/clangd/output/bin/clangd"
" 离开插入模式后自动关闭预览窗口
autocmd InsertLeave * if pumvisible() == 0|pclose|endif
" 设置选中补全选项的向上选择和向下选择的按键,默认是tapb和s-tab
let g:ycm_key_list_select_completion = [‘<Down>‘]
let g:ycm_key_list_previous_completion = [‘<Up>‘]
" 开启 YCM 基于标签引擎
let g:ycm_collect_identifiers_from_tags_files=1
" 语法关键字补全
let g:ycm_seed_identifiers_with_syntax=1
" 关闭加载.ycm_extra_conf.py提示
let g:ycm_confirm_extra_conf=0
" 在注释输入中也能补全
let g:ycm_complete_in_comments = 1
" 在字符串输入中也能补全
let g:ycm_complete_in_strings = 1
" 注释和字符串中的文字也会被收入补全
let g:ycm_collect_identifiers_from_comments_and_strings = 0
" 设置在下面几种格式的文件上屏蔽ycm
let g:ycm_filetype_blacklist = {
\ ‘tagbar‘ : 1,
\ ‘qf‘ : 1,
\ ‘notes‘ : 1,
\ ‘markdown‘ : 1,
\ ‘unite‘ : 1,
\ ‘text‘ : 1,
\ ‘vimwiki‘ : 1,
\ ‘pandoc‘ : 1,
\ ‘infolog‘ : 1,
\ ‘mail‘ : 1
\}
"设置关健字触发补全
let g:ycm_semantic_triggers = {
\ ‘c‘ : [‘->‘, ‘.‘, ‘ ‘, ‘(‘, ‘[‘, ‘&‘],
\ ‘objc‘ : [‘->‘, ‘.‘, ‘re!\[[_a-zA-Z]+\w*\s‘, ‘re!^\s*[^\W\d]\w*\s‘,
\ ‘re!\[.*\]\s‘],
\ ‘ocaml‘ : [‘.‘, ‘#‘],
\ ‘cpp,objcpp‘ : [‘->‘, ‘.‘, ‘::‘],
\ ‘perl‘ : [‘->‘],
\ ‘php‘ : [‘->‘, ‘::‘],
\ ‘cs,java,javascript,typescript,d,python,perl6,scala,vb,elixir,go‘ : [‘.‘],
\ ‘ruby‘ : [‘.‘, ‘::‘],
\ ‘lua‘ : [‘.‘, ‘:‘],
\ ‘erlang‘ : [‘:‘],
\ }
""" YCM Settings End
""" UltiSnips Start
"插入模式下直接通过<C-z>键来触发UltiSnips的代码块补全
let g:UltiSnipsExpandTrigger="<tab>"
"弹出UltiSnips的可用列表,由于不常用, 所以这里设置成了特殊的<C-i>映射
" let g:UltiSnipsListSnippets="<C-i>"
"<C-f>跳转的到下一个代码块可编辑区
let g:UltiSnipsJumpForwardTrigger="<C-f>"
"<C-b>跳转到上一个代码块可编辑区
let g:UltiSnipsJumpBackwardTrigger="<C-b>"
""" UltiSnips End
""" NerdCommenter Start
" Add spaces after comment delimiters by default
let g:NERDSpaceDelims = 1
" Use compact syntax for prettified multi-line comments
let g:NERDCompactSexyComs = 1
" Align line-wise comment delimiters flush left instead of following code indentation
let g:NERDDefaultAlign = ‘left‘
" Set a language to use its alternate delimiters by default
"let g:NERDAltDelims_java = 1
" Add your own custom formats or override the defaults
"let g:NERDCustomDelimiters = { ‘c‘: { ‘left‘: ‘/**‘,‘right‘: ‘*/‘ } }
" Allow commenting and inverting empty lines (useful when commenting a region)
let g:NERDCommentEmptyLines = 1
" Enable trimming of trailing whitespace when uncommenting
let g:NERDTrimTrailingWhitespace = 1
" Enable NERDCommenterToggle to check all selected lines is commented or not
let g:NERDToggleCheckAllLines = 1
""" NerdCommenter End
""" NerdTree Start
"let g:NERDTreeDirArrowExpandable = ‘‘
"let g:NERDTreeDirArrowCollapsible = ‘‘
""" NerdTree End
call plug#begin(‘E:/Vim/plug_dir‘)
Plug ‘ycm-core/YouCompleteMe‘
Plug ‘SirVer/ultisnips‘
Plug ‘honza/vim-snippets‘
Plug ‘preservim/nerdtree‘
Plug ‘preservim/nerdcommenter‘
call plug#end()
""" Vim Shortcut Key Start
map <F8> :NERDTreeToggle<CR>
""" Vim Shortcut Key End
原文:https://www.cnblogs.com/winsons/p/12687724.html