个人从网上收集了一些比较实用的vim插件,在此做一个笔记,方便自己下次查看,同时也给需要的人提供一些帮助。
插件的有些设置可自行查看github官网,在这里我只列出一些我用的设置。
优快云不再更新,关于vim新增插件,详见:https://www.cnblogs.com/wybliw/p/10237197.html
1.下载安装vimplus,里面包含了安装方法。
来自chxuan
请仔细阅读chxuan大神的文档,YouCompleteMe自动补全插件只支持Linux 64位系统。
2.安装完成后,执行vim -v,会看到如下图(引用chxuan)。
3.安装完成后,若有乱码,Airline等插件有乱码,
需设置终端字体为Nerd Font。
字体下载地址:
(1),Ubuntu Nerd Font字体,等宽,代码字体,
字母和数字很方便区分。
(2),Droid Sans Mono Nerd Font字体,等宽,代码字体,
4.完善vim插件
(1)脚本添加一些功能,根据个人需要:
set foldmethod=marker "开启代码折叠,并保存折叠信息
" 分屏窗口大小调整
nnoremap <c-up> <c-w>-
nnoremap <c-down> <c-w>+
nnoremap <c-left> <c-w><
nnoremap <c-right> <c-w>>
(2)添加插件:
(A)显示vim文档哪些行被修改的插件
Github网址:
Plug 'chrisbra/changesPlugin'
效果如下图(红色:删除, 蓝色:修改, 绿色:新增):
脚本配置:
let g:changes_autocmd=1
let g:changes_use_icons = 1
let g:changes_linehi_diff = 0
(B)vim-man插件
在vim中查看相关函数等的man手册,支持水平窗口和垂直窗口打开。
Github网址:
Plug 'vim-utils/vim-man'
支持<leader>键,需要自己设置相关按键映射,方法参考vim-man官方是说明,效果如下图:
水平窗口打开:
垂直窗口打开:
脚本配置:
"vim-man
map <leader>m <Plug>(Man)
map <leader>v <Plug>(Vman)
(C)显示 缩进线 插件
Github网址:
Plug 'nathanaelkane/vim-indent-guides'
效果如下图:
脚本配置:
"vim-indent-guides
let g:indent_guides_enable_on_vim_startup = 1
let g:indent_guides_auto_colors = 0
let g:indent_guides_guide_size = 1
let g:indent_guides_start_level = 1
let g:indent_guides_space_guides = 1
let g:indent_guides_tab_guides = 0
hi IndentGuidesOdd guibg=red ctermbg=0
hi IndentGuidesEven guibg=green ctermbg=8
(D)Tab键快速插入断码片段
Github网址:
Plug 'honza/vim-snippets'
Plug 'sirver/ultisnips'
效果图(引用原网址图片):
脚本配置:
" ultisnips
let g:UltiSnipsExpandTrigger="<tab>"
let g:UltiSnipsJumpForwardTrigger="<c-b>"
let g:UltiSnipsJumpBackwardTrigger="<c-z>"
let g:UltiSnipsEditSplit="vertical"
(E)YouCompleteMe的一些配置
很多设置请参考github官方文档:
脚本配置:
let g:ycm_key_list_stop_completion = ['<C-y>']
let g:ycm_key_list_select_completion = ['<Down>']
let g:ycm_key_list_previous_completion = ['<Up>']
(F) vim代码格式化插件 :vim-autoformat
Github网址:
Plug 'chiel92/vim-autoformat'
vim-autoformat 插件添加完成后,需要再安装 astyle 格式化工具。
格式化工具有很多种:
(1)astyle(支持C, C++, C++/CLI, Objective‑C, C#和Java);
(2)clang-format(支持C, C++,和Objective-C );
(3)python-pep8,python3-pep8,python-autopep8;
(4)yapf(Google开发的Python格式化工具)
在这里,我只安装了第1种。
ubuntu系统:
sudo apt-get install astyle
astyle 支持的格式化风格:
--style=allman / --style=bsd / --style=break / -A1
Allman style uses broken braces.int Foo(bool isBar) { if (isBar) { bar(); return 1; } else return 0; }
--style=java / --style=attach / -A2
Java style uses attached braces.int Foo(bool isBar) { if (isBar) { bar(); return 1; } else return 0; }
--style=kr / --style=k&r / --style=k/r / -A3
Kernighan & Ritchie style uses linux braces. Opening braces are broken from namespaces, classes, and function definitions. The braces are attached to everything else, including arrays, structs, enums, and statements within a function.Using the k&r option may cause problems because of the &. This can be resolved by enclosing the k&r in quotes (e.g. ‑‑style="k&r") or by using one of the alternates ‑‑style=kr or ‑‑style=k/r.
int Foo(bool isBar) { if (isBar) { bar(); return 1; } else return 0; }
以上列举了3种常用的代码风格,其他请参见官网:
http://astyle.sourceforge.net/astyle.html#_break-one-line-headers
" vim-autoformat
let g:formatdef_my_custom_c = '"astyle --mode=c --style=allman"'
let g:formatters_c = ['my_custom_c']
"au BufWrite * :Autoformat
let g:autoformat_autoindent = 0
let g:autoformat_retab = 0
let g:autoformat_remove_trailing_spaces = 0
noremap <F12> :Autoformat<CR>
(Z)关于脚本的其他配置
注意F5按键和YouCompleteMe的查错按键映射有冲突,需要修改。
" ======= C,C++ 按F5编译运行 =========
map <F5> :call CompileRunGcc()<CR>
func! CompileRunGcc()
exec "w"
if &filetype == 'c'
exec "!gcc % -o %<"
exec "!time ./%<"
elseif &filetype == 'cpp'
exec "!g++ % -o %<"
exec "!time ./%<"
elseif &filetype == 'java'
exec "!javac %"
exec "!time java %<"
endif
endfunc
" ====== C,C++的调试 =========
map <F6> :call Rungdb()<CR>
func! Rungdb()
exec "w"
if &filetype == 'c'
exec "!gcc % -g -o %<"
exec "!gdb ./%<"
elseif &filetype == 'cpp'
exec "!g++ % -g -o %<"
exec "!gdb ./%<"
endif
endfunc
"F12 格式化代码 , 如果添加了vim-autoformat插件,此映射请注释掉,防止冲突
map <F12> gg=G
后期会不定期更新,添加更多强大的插件。