vimrc配置

" 显示行数
set number

" vim安装目录
let vim_dir='E:/Vim/'
" Vim插件目录
let vim_plug_dir=vim_dir . '/plug_dir'

" 设置Vim运行时环境路径
set rtp+=E:\Vim\plug_dir\fzf

" 设置vim的前缀键
let mapleader=']'

" 语法高亮
syntax enable

" 设置背景色调
set background=light

" 设置主题
colorscheme solarized

" 开启文件类型侦察
filetype plugin on

" 去掉讨厌的有关vi一致性模式,避免以前版本的一些bug和局限
set nocompatible

" 设置初始界面位置
"winpos 100 100

" 设置Gvim初始界面大小
set lines=50
set columns=200

" 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

" 设置Vim终端字符编码
set termencoding=utf8

" 设置VIM缓冲区以及界面的字符编码
" VIM运行时,其菜单、标签、以及各个缓冲区统一使用一种字符编码方式。
set encoding=utf-8

" 设置文件字符编码
set fileencoding=utf-8

" 设置vim探测文件的字符编码,从左到右优先
set fileencodings=utf-8,ucs-bom,gb2312,gbk,gb18030,cp936set

" 设置菜单语言
set langmenu=zh_CN.UTF-8
" 导入删除菜单脚本,删除乱码的菜单
source $VIMRUNTIME/delmenu.vim
"导入正常的菜单脚本
source $VIMRUNTIME/menu.vim

"设置提示信息语言
language messages zh_CN.utf-8


""" YCM Setrtings Start

" c/c++语言补全需要clangd路径
let g:ycm_clangd_binary_path = 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

""" FZF Start
" This is the default extra key bindings
let g:fzf_action = {
  \ 'ctrl-t': 'tab split',
  \ 'ctrl-x': 'split',
  \ 'ctrl-v': 'vsplit' }

" Default fzf layout
" - down / up / left / right
let g:fzf_layout = { 'down': '~40%' }

" In Neovim, you can set up fzf window using a Vim command
let g:fzf_layout = { 'window': 'enew' }
let g:fzf_layout = { 'window': '-tabnew' }
let g:fzf_layout = { 'window': '10split enew' }

" Customize fzf colors to match your color scheme
let g:fzf_colors =
\ { 'fg':      ['fg', 'Normal'],
  \ 'bg':      ['bg', 'Normal'],
  \ 'hl':      ['fg', 'Comment'],
  \ 'fg+':     ['fg', 'CursorLine', 'CursorColumn', 'Normal'],
  \ 'bg+':     ['bg', 'CursorLine', 'CursorColumn'],
  \ 'hl+':     ['fg', 'Statement'],
  \ 'info':    ['fg', 'PreProc'],
  \ 'border':  ['fg', 'Ignore'],
  \ 'prompt':  ['fg', 'Conditional'],
  \ 'pointer': ['fg', 'Exception'],
  \ 'marker':  ['fg', 'Keyword'],
  \ 'spinner': ['fg', 'Label'],
  \ 'header':  ['fg', 'Comment'] }

" Enable per-command history.
" CTRL-N and CTRL-P will be automatically bound to next-history and
" previous-history instead of down and up. If you don't like the change,
" explicitly bind the keys to down and up in your $FZF_DEFAULT_OPTS.

let g:fzf_history_dir = vim_dir . '/plugin_extra_data/fzf'

"调用Rg进行搜索,包含隐藏文件
command! -bang -nargs=* Rg
  \ call fzf#vim#grep(
  \   'rg --column --line-number --no-heading --color=always --smart-case --hidden '.shellescape(<q-args>), 1,
  \   <bang>0 ? fzf#vim#with_preview('up:60%')
  \           : fzf#vim#with_preview('right:50%:hidden', '?'),
  \   <bang>0)
""" FZF End

call plug#begin(vim_plug_dir)
Plug 'ycm-core/YouCompleteMe'
Plug 'SirVer/ultisnips'
Plug 'honza/vim-snippets'
Plug 'preservim/nerdtree'
Plug 'preservim/nerdcommenter'
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
Plug 'junegunn/fzf.vim'
call plug#end()

""" Vim Shortcut Key Start
map <F8> :NERDTreeToggle<CR>
map <leader>p :Files<CR>
map <leader>b :Buffers<CR>
map <leader>f :Rg<CR>
""" Vim Shortcut Key End

posted @ 2020-04-12 21:18  夜里寻星  阅读(218)  评论(0)    收藏  举报