跳过正文
  1. Posts/

8102年了,来更新一波vim配置

·3 分钟

现在用的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

相关文章

vim下python 的配置

·2 分钟
由于最近要做数字图像处理的大作业,以及之后一段时间,估计写python多一些,所以打算花些时间配置下vim. # 1. 一键执行 # 其实之前一直有的。。不过没有效果,就没有管。发现问题是,python对应的filetype为"python",而不是"py" # 1func! CompileRunGcc() 2 exec "w" 3 if &filetype == 'c' 4 exec "!g++ % -o %<" 5 exec "! ./%<" 6 elseif &filetype == 'cpp' 7 exec "!g++ % -std=gnu++11 -Wall -o %<" 8 exec "! ./%<" 9 elseif &filetype == 'java' 10 exec "!javac %" 11 exec "!java %<" 12 elseif &filetype == 'sh' 13 :!./% 14 elseif &filetype == 'python' 15 " exec "!python %" 16 " exec "!python %<" 17 exec "!python2.7 %" 18 endif 19endfunc 2.代码补全 # 不想折腾了。。既然ycm也支持python,就先用用看好了。。不行再换别的。 # 放一段ycm for python的配置文件 # 1"默认配置文件路径" 2let g:ycm_global_ycm_extra_conf = '~/.ycm_extra_conf.py' 3"打开vim时不再询问是否加载ycm_extra_conf.py配置" 4let g:ycm_confirm_extra_conf=0 5set completeopt=longest,menu 6"python解释器路径" 7let g:ycm_path_to_python_interpreter='/usr/bin/python' 8"是否开启语义补全" 9let g:ycm_seed_identifiers_with_syntax=1 10"是否在注释中也开启补全" 11let g:ycm_complete_in_comments=1 12let g:ycm_collect_identifiers_from_comments_and_strings = 0 13"开始补全的字符数" 14let g:ycm_min_num_of_chars_for_completion=2 15"补全后自动关机预览窗口" 16let g:ycm_autoclose_preview_window_after_completion=1 17" 禁止缓存匹配项,每次都重新生成匹配项" 18let g:ycm_cache_omnifunc=0 19"字符串中也开启补全" 20let g:ycm_complete_in_strings = 1 3. 语法检查 # Syntastic大家都知道了。。。。看到了异步检测插件ALE,打算试一下。 # ale_github # 需要注意的是,这个插件需要vim 8.0+的特性。。。 # 放一波配置文件 # 1""""""""""""""""""for ale begin """""""""""""""" 2let g:ale_sign_column_always = 1 "保持侧边栏可见: 3 4let g:ale_sign_error = '>>' "改变错误和警告标识符 5let g:ale_sign_warning = '--' 6let g:ale_statusline_format = ['⨉ %d', '⚠ %d', '⬥ ok'] "改变状态栏信息格式 7 8"自定义跳转错误行快捷键: 9nmap <silent> <C-k> <Plug>(ale_previous_wrap) 10nmap <silent> <C-j> <Plug>(ale_next_wrap) 11"消除某excption not caught的警告 12let g:ale_emit_conflict_warnings = 0 4. 编程提示(jedi-vim) # 据说是vim写python的神器。。。装来看看。。。 # 据说默认配置就够了,先不折腾了 # # #

vundle error detected while processing function

·1 分钟
好久没装新插件了,最新要配下python,发现安装时候满屏的错误。。。 # 最后发现是shell的锅,因为我用的是fish,在.vimrc文件中添加 # 1set shell=/bin/bash 即可。 # 以及说下可能的其他原因,虽然我没遇到 # * 对于arch系,可能从aur中安装的版本out ot data * 可能没有把.vimrc中vundle的配置从set rtp+=~/.vim/bundle/vundle更新成set rtp+=~/.vim/bundle/vundle.vim * 可能项目名称用了" 而不是' 以及顺手查了下bundle和Plugin的区别。。。 # 简单来说。。Plugin是新写法,bundle是正在被淘汰的写法,不过由于兼容性的原因,仍然在使用。。。 # 以后使用plugin的写法就好。 # 参考资料

protobuf学习笔记

·4 分钟
Protobuff 是一种轻便高效的结构化数据存储格式,可以用于结构化数据序列化。它很适合做数据存储或 RPC 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。

Eigen: C++开源矩阵学习笔记

·2 分钟
接触Eigen的原因是最近在看caffe/caffe2源码,caffe2中使用了Eigen库. Eigen 是一个基于C++模板的线性代数库,直接将库下载后放在项目目录下,然后包含头文件就能使用,非常方便。对于Linux用户,只需要把头文件放到/usr/include 下即可此外,Eigen的接口清晰,稳定高效。