8102年了,来更新一波vim配置
现在用的vim配置还是2015年7月的时候写的。
三年过去了,vim到了8.0,很多功能也有了更多选择。因此打算来更新一波vim配置。目前还在更新过程中。。。等差不多折腾完再来记录一些信息。
1""""""""""" for vim """"""""""""""
2set ru
3set nu
4set clipboard+=unnamed
5" 映射全选+复制 ctrl+a
6map <C-A> ggvG"+Y
7"去空行
8nnoremap <F2> :g/^\s*$/d<CR>
9" 自动缩进
10set autoindent
11set tabstop=4
12set softtabstop=4
13set shiftwidth=4
14filetype on
15" 载入文件类型插件
16filetype plugin on
17" 为特定文件类型载入相关缩进文件
18filetype indent on
19" 高亮显示匹配的括号
20set showmatch
21" 高亮当前行
22set cursorline
23hi CursorLine cterm=bold ctermbg=blue ctermfg=yellow
1"C,C++ 按F5编译运行
2map <F5> :call CompileRunGcc()<CR>
3func! CompileRunGcc()
4 exec "w"
5 if &filetype == 'c'
6 exec "!g++ % -o %<"
7 exec "! ./%<"
8 elseif &filetype == 'cpp'
9 exec "!g++ % -std=gnu++11 -Wall -o %<"
10 exec "! ./%<"
11 elseif &filetype == 'java'
12 exec "!javac %"
13 exec "!java %<"
14 elseif &filetype == 'sh'
15 :!./%
16 elseif &filetype == 'python'
17 " exec "!python %"
18 " exec "!python %<"
19 exec "!python2.7 %"
20 endif
21endfunc
1autocmd BufNewFile *.cpp,*.[ch],*.sh,*.java exec ":call SetTitle()"
2""定义函数SetTitle,自动插入文件头
3"map <F4> :call SetTitle()<CR>
4func SetTitle()
5 "如果文件类型为.sh文件
6 if &filetype == 'sh'
7 call setline(1,"\#########################################################################")
8 call append(line("."), "\# File Name: ".expand("%"))
9 call append(line(".")+1, "\# Author: 111qqz")
10 call append(line(".")+2, "\# mail: renkuanze@sensetime.com")
11 call append(line(".")+3, "\# Created Time: ".strftime("%c"))
12 call append(line(".")+4, "\#########################################################################")
13 call append(line(".")+5, "\#!/bin/bash")
14 call append(line(".")+6, "")
15 else
16 let l = 0
17 let l = l + 1 | call setline(l,'/* ***********************************************')
18 let l = l + 1 | call setline(l,'Author :111qqz')
19 let l = l + 1 | call setline(l,'mail: renkuanze@sensetime.com')
20 let l = l + 1 | call setline(l,'Created Time :'.strftime('%c'))
21 let l = l + 1 | call setline(l,'File Name :'.expand('%'))
22 let l = l + 1 | call setline(l,'************************************************ */')
23 let l = l + 1 | call setline(l,'')
24 endif
25 "新建文件后,自动定位到文件末尾
26 autocmd BufNewFile * normal G23
27endfunc
1"""""""""""""""""""""""""""""""""""""""""""""""""""""""
2call plug#begin('~/.vim/plugged')
3Plug 'octol/vim-cpp-enhanced-highlight'
4Plug 'w0rp/ale'
5Plug 'vim-airline/vim-airline'
6Plug 'vim-airline/vim-airline-themes'
7Plug 'Valloric/YouCompleteMe'
8" Initialize plugin system
9call plug#end()
10"""""""""""""""""for vim-cpp-enhanced-highlight'''''''''''''''''''''''''''
11let g:cpp_class_scope_highlight = 1
12let g:cpp_member_variable_highlight = 1
13let g:cpp_class_decl_highlight = 1
14let g:cpp_experimental_simple_template_highlight = 1
15let g:cpp_concepts_highlight = 1
16"""""""""""""""""""""""""for vim-airline""""""""""""""""""""""""""""
17let g:airline_powerline_fonts = 1
18let g:airline#extensions#tabline#enabled = 1
19 let g:airline#extensions#tabline#buffer_nr_show = 1
20let g:airline#extensions#tabline#left_sep = ' '
21let g:airline#extensions#tabline#left_alt_sep = '|'
22 if !exists('g:airline_symbols')
23 let g:airline_symbols = {}
24 endif
25 let g:airline_left_sep = '⮀'
26 let g:airline_left_alt_sep = '⮁'
27 let g:airline_right_sep = '⮂'
28 let g:airline_right_alt_sep = '⮃'
29 let g:airline_symbols.branch = '⭠'
30 let g:airline_symbols.readonly = '⭤'
31"""""""""""""""""" for ale """""""""""""""""""""""""""""""""""""""""""""""""""
32function! LinterStatus() abort
33 let l:counts = ale#statusline#Count(bufnr(''))
34 let l:all_errors = l:counts.error + l:counts.style_error
35 let l:all_non_errors = l:counts.total - l:all_errors
36 return l:counts.total == 0 ? 'OK' : printf(
37 \ '%dW ',
38 \ all_non_errors,
39 \ all_errors
40 \)
41endfunction
42let g:ale_linters_explicit = 1
43"let g:ale_completion_delay = 500
44"let g:ale_echo_delay = 20
45"let g:ale_lint_delay = 500
46let g:ale_echo_msg_format = '[%linter%] %code: %%s'
47"let g:ale_lint_on_insert_leave = 1
48let g:airline#extensions#ale#enabled = 1
49let g:ale_sign_column_always = 1
50let g:ale_sign_error = '>>'
51let g:ale_sign_warning = '--'
52let g:ale_sign_column_always = 1
53let g:ale_statusline_format = ['⨉ %d', '⚠ %d', '⬥ ok']
54let g:ale_echo_msg_error_str = 'E'
55let g:ale_echo_msg_warning_str = 'W'
56let g:ale_echo_msg_format = '[%linter%] %s [%severity%]'
57let g:ale_linters = {'cpp': ['clangcheck']}
58let g:ale_c_gcc_options = '-Wall -O2 -std=c99'
59let g:ale_cpp_gcc_options = '-Wall -O2 -std=c++14'
60hi! clear SpellBad
61hi! clear SpellCap
62hi! clear SpellRare
63hi! SpellBad gui=undercurl guisp=red
64hi! SpellCap gui=undercurl guisp=blue
65hi! SpellRare gui=undercurl guisp=magenta
66set statusline=%{LinterStatus()}
67"""""""""""""""""youcompleteme设置 by wyz"""""""""""""""""
68let g:cpp_class_scope_highlight=1
69let g:cpp_experimental_template_highlight=1
70let g:ycm_show_diagnostics_ui=0
71let g:ycm_enable_diagnostic_signs=0
72let g:ycm_enable_diagnostic_highlighting = 0
73let g:ycm_echo_current_diagnostic = 0
74let g:ycm_collect_identifiers_from_tags_files = 1
75let g:ycm_key_invoke_completion = '<C-Q>'
76let g:ycm_seed_identifiers_with_syntax = 1
77let g:ycm_global_ycm_extra_conf = '~/.ycm_extra_conf.py'
78let g:ycm_collect_identifiers_from_tags_files = 1
79let g:ycm_confirm_extra_conf = 0
80let g:ycm_autoclose_preview_window_after_completion = 1
81let g:ycm_autoclose_preview_window_after_insertion = 1
82let g:ycm_add_preview_to_completeopt = 0
83let g:ycm_server_log_level = 'info'
84let g:ycm_min_num_identifier_candidate_chars = 2
85let g:ycm_collect_identifiers_from_comments_and_strings = 1
86let g:ycm_complete_in_strings=1
87let g:ycm_key_invoke_completion = '<c-z>'
88set completeopt=menu,menuone
89noremap <c-z> <NOP>
90let g:ycm_semantic_triggers = {
91 \ 'c,cpp,python,java,go,erlang,perl': ['re!\w{2}'],
92 \ 'cs,lua,javascript': ['re!\w{2}'],
93 \ }
94highlight PMenu ctermfg=0 ctermbg=242 guifg=black guibg=darkgrey
95highlight PMenuSel ctermfg=242 ctermbg=8 guifg=darkgrey guibg=black