集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,不管是Java、C还是Python,使用IDE编程可以帮你 检查语法、自动补全、后台编译 等,写代码就变得容易许多。另外,如果经常在服务器上工作的小伙伴一定知道Vim在进行文本编辑的时候是多么的方便。那么当vim的高效编辑性和IDE辅助编程性相融合,岂不是天下无敌?
下面介绍7款常用插件,帮你打造高可用性的VIM-IDEヾ(◍°∇°◍)ノ゙
Vim-plug
1.安装
$ curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
2.配置
例如,我们安装 “lightline.vim” 插件。为此,请在 ~/.vimrc 的顶部添加以下行
call plug#begin('~/.vim/plugged')Plug 'itchyny/lightline.vim'call plug#end()
3.使用
$ vim #打开vim:PlugStatus #查看插件状态:PlugInstall #安装之前在配置文件中声明的插件
:PlugUpdate #更新插件:PlugDiff #查看插件的变化状态,简单地回滚有问题的插件。:PlugClean #删除插件
coc.nvim
- 多种触发方式 , 同时支持手工触发 。默认使用 always 自动模式表示输入单词首字母以及 trigger character 时触发补全,可配置为 trigger 模式,表示仅在输入 trigger character 时触发,或者配置为 none,表示禁用自动触发。任何触发模式下都可使用绑定的快捷键进行手工触发。
- 模糊匹配,智能大小写 。同 YCM 等知名插件。
- 多 source异步 并发获取。同时异步获取不同 source 结果,效率更高。
- 支持通过删除字符纠正错误输入 。为了提高过滤的效率,除非清空当前过滤字符,否则删除过多的字符不会导致补全停止,而是触发一次针对已有补全缓存的重新过滤。
1.安装
coc.nvim依赖nodejs,所以首先要安装nodejs
curl -sL install-node.now.sh/lts | bash
安装coc.nvim,同样需要用到vim-plug,在~/.vimrc文件中配置
Plug 'neoclide/coc.nvim', {'branch': 'release'}
在vim命令行中输入:CocInfo,若有类似以下信息弹出表示插件安装成功
2.配置
coc.nvim只是一个平台,它能够允许你安装各种语言插件,达到不同语言的补全效果。因此我们只有安装了对应的语言插件才能实现补全。以C/C++为例:
通过在vim内的命令模式输入:CocConfig来配置coc.nvim的配置文件coc-settings.json
{"languageserver": { "clangd": { "command": "clangd", "rootPatterns": ["compile_flags.txt", "compile_commands.json"], "filetypes": ["c", "cc", "cpp", "c++", "objc", "objcpp"] } }}
Ps:这种配置模式下,coc主要是依赖clangd进行代码自动化补全,所以需要事先安装好clangd。
对更多其他语言的支持可以参考:https://github.com/neoclide/coc.nvim/wiki/Language-servers#supported-features
3.进阶
进一步的,你可以对coc进行映射扩展,使得更符合你的操作习惯。在~/.vimrc中进行如下配置
" Use `[g` and `]g` to navigate diagnosticsnmap <silent> [g <Plug>(coc-diagnostic-prev)nmap <silent> ]g <Plug>(coc-diagnostic-next)" GoTo code navigation.nmap <silent> gd <Plug>(coc-definition)nmap <silent> gy <Plug>(coc-type-definition)nmap <silent> gi <Plug>(coc-implementation)nmap <silent> gr <Plug>(coc-references)" Use K to show documentation in preview window.nnoremap <silent> K :call <SID>show_documentation()<CR>function! s:show_documentation() if (index(['vim','help'], &filetype) >= 0) execute 'h '.expand('<cword>') else call CocAction('doHover') endifendfunction
NERDTree
1.安装
call plug#begin()Plug 'preservim/nerdtree'call plug#end()
2.配置
NERDTree默认无须配置即可直接使用,当然更改部分映射后,可以使得目录树试用起来更加得心应手。最常见的配置在~/.vimrc添加如下命令,即可使用Ctrl+n快速开启目录树。
map <C-n> :NERDTreeToggle<CR>
3.使用
目录树的使用主要通过在vim的command模式下键入如下命令,即可达到相应的效果。
o: 打开一个目录或者打开文件,创建的是 buffer,也可以用来打开书签
go: 打开一个文件,但是光标仍然留在 NERDTree,创建的是 buffer
T: 打开一个文件,但是光标仍然留在 NERDTree,创建的是 Tab,对书签同样生效
gi: 水平分割创建文件的窗口,但是光标仍然留在 NERDTree
leaderF
1.安装
Plug 'Yggdroot/LeaderF', { 'do': './install.sh' }
2.使用
:LeaderfFunction 搜索当前文件的函数(这个很有意思,如下图列出该文件中所有的函数和变量)
auto-pairs
这个就是插件的功能简单而实用: 在输入/删除左括号时,能自动补上/删除右括号 。
1.安装
Plug 'jiangmiao/auto-pairs'
2.使用
au Filetype FILETYPE let b:AutoPairs = {"(": ")"}au FileType php let b:AutoPairs = AutoPairsDefine({'<?' : '?>', '<?php': '?>'})
vim-airline
vim-airline是vim的底部状态增强/美化插件,很好的贯彻了 代码能力怎么样咱先不提,这个逼格一定要先上来 。
具体效果如图所示,值得一提的是,当该插件搭配具备代码检测功能的插件时,可以实时提示该文件有多少个报错和警告等有用信息。
1.安装
Plug 'vim-airline/vim-airline'Plug 'vim-airline/vim-airline-themes'
其中vim-airline-themes是主题插件,可以使得状态栏的颜色更加丰富。
2.配置
set laststatus=2 "永远显示状态栏let g:airline_powerline_fonts = 1 " 支持 powerline 字体let g:airline#extensions#tabline#enabled = 1 “ 显示窗口tab和bufferlet g:airline_theme='moloai' " murmur配色不错if !exists('g:airline_symbols')let g:airline_symbols = {}endiflet g:airline_left_sep = '▶'let g:airline_left_alt_sep = '❯'let g:airline_right_sep = '◀'let g:airline_right_alt_sep = '❮'let g:airline_symbols.linenr = '¶'let g:airline_symbols.branch = '⎇'
NerdCommenter
如果你是一个酷爱写注释的程序员的话,那么你一定要用一下nerdcommenter(当然,如果你不希望你的代码被后人吐槽的话,还是多写注释吧)。
NerdCommenter和Vim的Visual模式结合可以快速的注释/取消注释多行代码,同时在行尾追加注释并自动进入Insert模式可以方便的进行行内注释[4]。
1.安装
Plug 'preservim/nerdcommenter'
2.配置
" Add spaces after comment delimiters by defaultlet g:NERDSpaceDelims = 1" Use compact syntax for prettified multi-line commentslet g:NERDCompactSexyComs = 1" Align line-wise comment delimiters flush left instead of following code indentationlet g:NERDDefaultAlign = 'left'" Set a language to use its alternate delimiters by defaultlet g:NERDAltDelims_java = 1" Add your own custom formats or override the defaultslet g:NERDCustomDelimiters = { 'c': { 'left': '/**','right': '*/' }" Allow commenting and inverting empty lines (useful when commenting a region)let g:NERDCommentEmptyLines = 1" Enable trimming of trailing whitespace when uncommentinglet g:NERDTrimTrailingWhitespace = 1" Enable NERDCommenterToggle to check all selected lines is commented or not let g:NERDToggleCheckAllLines = 1
3.使用
\cc 注释当前行和选中行\cn 没有发现和\cc有区别\c<空格> 如果被选区域有部分被注释,则对被选区域执行取消注释操作,其它情况执行反转注释操作\cm 对被选区域用一对注释符进行注释,前面的注释对每一行都会添加注释\ci 执行反转注释操作,选中区域注释部分取消注释,非注释部分添加注释\cs 添加性感的注释,代码开头介绍部分通常使用该注释\cy 添加注释,并复制被添加注释的部分\c$ 注释当前光标到改行结尾的内容\cA 跳转到该行结尾添加注释,并进入编辑模式\ca 转换注释的方式,比如:/**/和//\cl \cb 左对齐和左右对其,左右对其主要针对/**/\cu 取消注释
[1]: Vim-plug:极简 Vim 插件管理器 https://linux.cn/article-9751-1.html
[2]:Coc.nvim 系列:为了更好的补全体验 https://zhuanlan.zhihu.com/p/39302327
发表评论