现在用的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
24
25"C,C++ 按F5编译运行
26map <F5> :call CompileRunGcc()<CR>
27func! CompileRunGcc()
28 exec "w"
29 if &filetype == 'c'
30 exec "!g++ % -o %<"
31 exec "! ./%<"
32 elseif &filetype == 'cpp'
33 exec "!g++ % -std=gnu++11 -Wall -o %<"
34 exec "! ./%<"
35 elseif &filetype == 'java'
36 exec "!javac %"
37 exec "!java %<"
38 elseif &filetype == 'sh'
39 :!./%
40 elseif &filetype == 'python'
41 " exec "!python %"
42 " exec "!python %<"
43 exec "!python2.7 %"
44 endif
45endfunc
46
47
48autocmd BufNewFile *.cpp,*.[ch],*.sh,*.java exec ":call SetTitle()"
49""定义函数SetTitle,自动插入文件头
50"map <F4> :call SetTitle()<CR>
51func SetTitle()
52 "如果文件类型为.sh文件
53 if &filetype == 'sh'
54 call setline(1,"\#########################################################################")
55 call append(line("."), "\# File Name: ".expand("%"))
56 call append(line(".")+1, "\# Author: 111qqz")
57 call append(line(".")+2, "\# mail: renkuanze@sensetime.com")
58 call append(line(".")+3, "\# Created Time: ".strftime("%c"))
59 call append(line(".")+4, "\#########################################################################")
60 call append(line(".")+5, "\#!/bin/bash")
61 call append(line(".")+6, "")
62 else
63 let l = 0
64 let l = l + 1 | call setline(l,'/* ***********************************************')
65 let l = l + 1 | call setline(l,'Author :111qqz')
66 let l = l + 1 | call setline(l,'mail: renkuanze@sensetime.com')
67 let l = l + 1 | call setline(l,'Created Time :'.strftime('%c'))
68 let l = l + 1 | call setline(l,'File Name :'.expand('%'))
69 let l = l + 1 | call setline(l,'************************************************ */')
70 let l = l + 1 | call setline(l,'')
71 endif
72 "新建文件后,自动定位到文件末尾
73 autocmd BufNewFile * normal G23
74endfunc
75
76
77
78
79"""""""""""""""""""""""""""""""""""""""""""""""""""""""
80call plug#begin('~/.vim/plugged')
81Plug 'octol/vim-cpp-enhanced-highlight'
82Plug 'w0rp/ale'
83Plug 'vim-airline/vim-airline'
84Plug 'vim-airline/vim-airline-themes'
85Plug 'Valloric/YouCompleteMe'
86" Initialize plugin system
87call plug#end()
88"""""""""""""""""for vim-cpp-enhanced-highlight'''''''''''''''''''''''''''
89let g:cpp_class_scope_highlight = 1
90let g:cpp_member_variable_highlight = 1
91let g:cpp_class_decl_highlight = 1
92let g:cpp_experimental_simple_template_highlight = 1
93let g:cpp_concepts_highlight = 1
94"""""""""""""""""""""""""for vim-airline""""""""""""""""""""""""""""
95let g:airline_powerline_fonts = 1
96let g:airline#extensions#tabline#enabled = 1
97 let g:airline#extensions#tabline#buffer_nr_show = 1
98let g:airline#extensions#tabline#left_sep = ' '
99let g:airline#extensions#tabline#left_alt_sep = '|'
100 if !exists('g:airline_symbols')
101 let g:airline_symbols = {}
102 endif
103 let g:airline_left_sep = '⮀'
104 let g:airline_left_alt_sep = '⮁'
105 let g:airline_right_sep = '⮂'
106 let g:airline_right_alt_sep = '⮃'
107 let g:airline_symbols.branch = '⭠'
108 let g:airline_symbols.readonly = '⭤'
109"""""""""""""""""" for ale """""""""""""""""""""""""""""""""""""""""""""""""""
110function! LinterStatus() abort
111 let l:counts = ale#statusline#Count(bufnr(''))
112 let l:all_errors = l:counts.error + l:counts.style_error
113 let l:all_non_errors = l:counts.total - l:all_errors
114 return l:counts.total == 0 ? 'OK' : printf(
115 \ '%dW ',
116 \ all_non_errors,
117 \ all_errors
118 \)
119endfunction
120let g:ale_linters_explicit = 1
121"let g:ale_completion_delay = 500
122"let g:ale_echo_delay = 20
123"let g:ale_lint_delay = 500
124let g:ale_echo_msg_format = '[%linter%] %code: %%s'
125"let g:ale_lint_on_insert_leave = 1
126let g:airline#extensions#ale#enabled = 1
127let g:ale_sign_column_always = 1
128let g:ale_sign_error = '>>'
129let g:ale_sign_warning = '--'
130let g:ale_sign_column_always = 1
131let g:ale_statusline_format = ['⨉ %d', '⚠ %d', '⬥ ok']
132let g:ale_echo_msg_error_str = 'E'
133let g:ale_echo_msg_warning_str = 'W'
134let g:ale_echo_msg_format = '[%linter%] %s [%severity%]'
135let g:ale_linters = {'cpp': ['clangcheck']}
136let g:ale_c_gcc_options = '-Wall -O2 -std=c99'
137let g:ale_cpp_gcc_options = '-Wall -O2 -std=c++14'
138hi! clear SpellBad
139hi! clear SpellCap
140hi! clear SpellRare
141hi! SpellBad gui=undercurl guisp=red
142hi! SpellCap gui=undercurl guisp=blue
143hi! SpellRare gui=undercurl guisp=magenta
144set statusline=%{LinterStatus()}
145"""""""""""""""""youcompleteme设置 by wyz"""""""""""""""""
146let g:cpp_class_scope_highlight=1
147let g:cpp_experimental_template_highlight=1
148let g:ycm_show_diagnostics_ui=0
149let g:ycm_enable_diagnostic_signs=0
150let g:ycm_enable_diagnostic_highlighting = 0
151let g:ycm_echo_current_diagnostic = 0
152let g:ycm_collect_identifiers_from_tags_files = 1
153let g:ycm_key_invoke_completion = '<C-Q>'
154let g:ycm_seed_identifiers_with_syntax = 1
155let g:ycm_global_ycm_extra_conf = '~/.ycm_extra_conf.py'
156let g:ycm_collect_identifiers_from_tags_files = 1
157let g:ycm_confirm_extra_conf = 0
158let g:ycm_autoclose_preview_window_after_completion = 1
159let g:ycm_autoclose_preview_window_after_insertion = 1
160let g:ycm_add_preview_to_completeopt = 0
161let g:ycm_server_log_level = 'info'
162let g:ycm_min_num_identifier_candidate_chars = 2
163let g:ycm_collect_identifiers_from_comments_and_strings = 1
164let g:ycm_complete_in_strings=1
165let g:ycm_key_invoke_completion = '<c-z>'
166set completeopt=menu,menuone
167noremap <c-z> <NOP>
168let g:ycm_semantic_triggers = {
169 \ 'c,cpp,python,java,go,erlang,perl': ['re!\w{2}'],
170 \ 'cs,lua,javascript': ['re!\w{2}'],
171 \ }
172highlight PMenu ctermfg=0 ctermbg=242 guifg=black guibg=darkgrey
173highlight PMenuSel ctermfg=242 ctermbg=8 guifg=darkgrey guibg=black