如何优雅的使用 Vim(二):插件介绍
如何优雅的使用 Vim(二):插件介绍插件使用 vim-plug 管理。很长一段时间,我都在用 Vundle,切换到 vim-plug 并非完全必要。 " 插件定义开始 call plug#begin('~/.vim/plugged') " 在此添加插件... " 插件到此结束 call plug#end() 不得不承认,vim-plug 用起来确实比 Vundle 简单。 下面来看看有哪些插件。 配色方案作为一个编辑器,颜值比什么都重要,Vim 也不例外。 Plug 'morhetz/gruvbox' Plug 'ayu-theme/ayu-vim' Plug 'drewtempelmeyer/palenight.vim' " 基于 Onedark,效果差不多 Plug 'joshdick/onedark.vim' " Atom Onedark 的复刻 目前用的是 状态栏
状态栏是一个大有作为的地方。 Plug 'vim-airline/vim-airline' " 主题,因为 gruvbox 对 airline 的支持不错,暂时就不需要了。 " Plug 'vim-airline/vim-airline-themes' 缩进标线
目前使用 Plug 'Yggdroot/indentLine' let g:indentLine_noConcealCursor = 1 let g:indentLine_color_term = 0 let g:indentLine_char = '|' 代码对齐目前使用 Plug 'godlygeek/tabular' 假如有一段 JS: var video = { metadata: { title: "Aligning assignments" h264Src: "/media/alignment.mov",oggSrc: "/media/alignment.ogv" posterSrc: "/media/alignment.png" duration: 320,} } 选中要对齐的行,执行 var video = { metadata: { title : "Aligning assignments" h264Src : "/media/alignment.mov",oggSrc : "/media/alignment.ogv" posterSrc : "/media/alignment.png" duration : 320,} } 此外, 文件管理器
树形结构的文件管理器,目前使用 Plug 'scrooloose/nerdtree' " F2 快速切换 nmap <F2> :NERDTreeToggle<CR> Vim 自带的
体验跟 代码提纲
以前用 taglist,现在用 不要安装 Linux 系统自带的 ctags,一般为 exuberant-ctags,最后更新于 2009 年,很久没有维护了。 Plug 'majutsushi/tagbar' nmap <F8> :TagbarToggle<CR> JS 的 tagbar 扩展:hushicai/tagbar-javascript.vim 注释Vim 优秀的注释插件不止一个,目前在用 Plug 'hrp/EnhancedCommentify' let g:EnhCommentifyRespectIndent = 'Yes' let g:EnhCommentifyPretty = 'Yes' 但是也有不爽的地方,比如下面这种多行注释无法对齐: // if (!ec) { // HttpSessionPtr session{ // new HttpSession(std::move(socket),GetRequestHandler()) // }; // session->Start(); // } 所以就在刚刚,我试了一下 // if (!ec) { // HttpSessionPtr session{ // new HttpSession(std::move(socket),GetRequestHandler()) // }; // session->Start(); // } Plug 'tomtom/tcomment_vim' 然而 tcomment 的快捷键是硬伤,一时半会很难适应。 彩虹括号当括号嵌套时,很难辨识。彩虹括号就是为了解决这个问题。
" Parentheses enhancements. Plug 'kien/rainbow_parentheses.vim' let g:rbpt_colorpairs = [ ['brown','RoyalBlue3'], ['Darkblue','SeaGreen3'], ['darkgray','DarkOrchid3'], ['darkgreen','firebrick3'], ['darkcyan', ['darkred', ['darkmagenta', ['brown', ['gray', ['black', ['red', ] let g:rbpt_max = 8 let g:rbpt_loadcmd_toggle = 0 au VimEnter * RainbowParenthesesToggle au Syntax * RainbowParenthesesLoadRound au Syntax * RainbowParenthesesLoadSquare au Syntax * RainbowParenthesesLoadBraces au Syntax * RainbowParenthesesLoadChevrons 另见:luochen1990/rainbow 然而这些彩虹括号插件,都免不了与 CMake 冲突——会使 CMake 语法高亮失效,只好放弃了。 语法高亮不得不说,基于关键字和模式匹配的语法高亮已经落后于时代了。 Vim 的语法高亮,有这样几种方式:
分别举几个例子。 基于关键字和模式: Plug 'justinmk/vim-syntax-extra' Plug 'octol/vim-cpp-enhanced-highlight' 基于 libclang: Plug 'jeaye/color_coded' 基于 ctags: Plug 'vim-scripts/TagHighlight' Plug 'xolox/vim-misc' Plug 'xolox/vim-easytags' 分别看一下效果。 vim-cpp-enhanced-highlight: TagHighlight: color_coded: 目前,我比较倾向于第一种,简单高效,效果虽然不怎么完美,但是可以接受。 Python 高亮增强Plug 'hdima/python-syntax' let python_highlight_all = 1 简单补全几个简单补全插件,不需要安装外部程序。 补全括号输入左括号时,自动补全右括号。 Plug 'Raimondi/delimitMate' " For Python docstring. au FileType python let b:delimitMate_nesting_quotes = ['"'] 补全 HTML/XML 标签Plug 'docunext/closetag.vim' let g:closetag_html_style=1 代码检测(Lint)首推 ALE (Async Lint Engine)。 Plug 'w0rp/ale' ALE 的特点是异步调用,不影响主界面。 ALE 作用于 C++ 代码的效果: 结语这里列举的插件,只是冰山一角。 有时候我不禁自问:到底是插件帮我节省的时间多,还是我寻找、配置插件的时间多? <全文完> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |