vim打造IDE推荐的那些插件
2022年为什么还要推荐vim?我认为主要有三点原因:因为它轻盈,因为它扩展性好,因为它帮助集中开发人员的注意力。
如果一个程序员希望今后在编码过程中,双手只希望触碰到一个输入设备,而不是鼠标和键盘来回切换,那我推荐你开始学习vim。
插件管理
vim有许多优秀的插件,在它们的帮助下,可以让vim变得更加强大,就好像本领高强的孙悟空又给配上了筋斗云。
在vim中安装插件,有两种主要的方式,一种是手动复制插件内容到指定的文件夹,这种常常需要用户自己去git clone
插件源码,拷贝到指定位置。另一种更便捷的方式是使用插件管理器,著名的管理器有Vundle、VAM、vim-plug、pathogen
等等,而经过多年发展,vim-plug
出挑的越发标致了,相比于其他的,更推荐使用这种方式安装vim插件。
vim-plug
vim-plug源码位置:源码。使用vim-plug
安装插件操作简单,windows 或者 linux系统上都可以很高效的进行配置。
vim-plugin 安装其实就是要下载plug.vim
文件,让vim工具可以自动加载它。
对于windows自带的PowerShell,要将其放到$HOME/vimfiles/autoload/plug.vim
。而对于使用win git 客户端或者ubuntu的话 ,要将其放到$HOME/.vim/autoload/plug.vim
。
在github地址中下载,网站中介绍了vimplug的安装方式,易学方便,使用时只需要在vim配置文件中写入下面两行。
1 | call plug#begin() |
在vimawesome中找到要安装的插件,放在上面两行中间,像这样:
1 | call plug#begin() |
下面是一些推荐的插件,帮助打造一个像IDE一样的编码环境。
推荐工具和vim插件
可以下载查看我的完整.vimrc
配置:
1 | wget https://hangliebe.com/download/filevim/.vimrc |
Nerdtree
NERDTree 是一款目录树资源管理工具,它的作用就是列出当前路径的目录树,可以方便的浏览项目的总体的目录结构和创建删除重命名文件或文件名。如下图左侧所示。
安装
vimawesome: Nerdtree
1 | call plug#begin() |
1 | :PlugInstall |
配置
1 | " ######set for NERDTree############ |
ctags
ctags是vim下方便代码阅读的工具。
安装
1 | sudo apt-get install ctags |
在工程的主要目录下运行ctags -R
会递归当前目录及子目录下的所有代码文件生成tags文件
1 | ctags -R |
如果只想为某些源码生成tags文件,使用类似如下命令
1 | ctags *.c *.h |
可以指定参数生成tags文件,C++工程推荐如下命令:
1 | ctags -R --c++-kinds=+px --fields=+iaS --extra=+q |
extra 选项用于增加额外的条目: f表示为每个文件增加一个条目, q为每个类增加一个条目
Taglist.vim
vim下的taglist插件主要用于查看程序源码的tags
文件,能让用户很快速的定位到相应的tags。下图中右侧生成的属性列表就依赖Tglist.vim生成
安装
taglist依赖于ctags
,所以要先装ctags
vimawesome: taglist.vim
1 | call plug#begin() |
1 | :PlugInstall |
配置
1 | " ######set for Tlist############ |
youcompleteme
代码补全插件,在vim作为IDE这件事情上承重极高,简称YCM。在编码时候,依赖该插件,完成自动补全,这一点才真正让开发人员接受使用vim作为新的IDE。
安装
- 安装YCM plugin
vimawesome: youcompleteme
1 | call plug#begin() |
1 | :PlugInstall |
- 安装 cmake, vim 和 python3
1 | apt install build-essential cmake vim-nox python3-dev |
- 安装mono-complete, go, node, java and npm
1 | apt install mono-complete golang nodejs default-jdk npm |
- 编译
1 | cd ~/.vim/bundle/YouCompleteMe |
配置
1 | "youcompleteme 默认tab s-tab 和自动补全冲突 |
在使用vim编写c++文件的时候, 出现’module’ object has no attribute ‘FlagsForFile’ , 修改.ycm_extra_conf.py
文件,在最后加上
1 | def Settings( **kwargs ): |
cpplint
cpplint是Google开发的一个C++代码风格检查工具,如果是遵循google code style的,可以使用cpplint作为代码规范的一个检查工具。该工具结合vim的Ale插件,可以实现代码编写过程中的静态检查。查看下一小节的Ale内容。
使用方法
直接在命令行使用cpplint检查文件。
1 | cpplint [options] files |
Ale
ALE(Asynchronous Lint Engine)是一个插件,在NeoVim 0.2.0+和Vim 8中,当你编辑文本文件时,它提供提示(语法检查和语义错误),并作为Vim语言服务器协议客户端。
安装
vimawesome: Ale
1 | call plug#begin() |
1 | :PlugInstall |
配置
1 | "------------ale设置------------------ |
cscope
1 | sudo apt-get install cscope // 安装 |
cscope -Rbkq
这个命令会生成三个文件:cscope.in.out
, cscope.out
, cscope.po.out
。
参数解析:
- -R: 在生成索引文件时,搜索子目录树中的代码
- -b: 只生成索引文件,不进入cscope的界面
- -k: 在生成索引文件时,不搜索/usr/include目录
- -q: 生成cscope.in.out和cscope.po.out文件,加快cscope的索引速度
.vimrc配置
1 | "通过cscope -Rbq产生代码的数据库文件, 通过该选项指定。 |
该工具配合tags工具使用。
fzf
Fuzzy finder
是一款使用GO语言编写的交互式的命令行工具,一款在linux上不可或缺的模糊检索工具。
安装
我的fzf工具安装基于vim 扩展安装
1 | call plug#begin() |
安装后需要执行下./.vim/plugged/fzf/install
,进行完整安装。
配置
在.bashrc
中配置执行环境。
1 | [ -f ~/.fzf.bash ] && source ~/.fzf.bash |
上图中我执行fe进行模糊查找,是因为我在~/.bashrc
中按个人习惯配置了命令。
auto-pairs
auto-pairs是一个帮助自动补全或者删除括号,引号的插件。在vimawesome查看介绍和安装方法。
配置
1 | "----auto-pairs 自动补全括号----------- |
indentline
提供缩进线的功能,在vimawesome查看介绍和安装方法。
配置
1 | "----缩进指示线 indentLine 配置 ---------- |