先上疗效,给你们看效果:python
首先说明,vi 和 vim 是两个不一样的版本,vi 是 vim 的精简版本,功能要弱不少,因此若是你的系统里面只有 vi,请执行 apt install vim
命令更新到 vim,并且最好更新到 8.0 版本。linux
若是你系统里面没有安装 vim,你打开 vi,看到的应该是下面这样的。git
安装 vim 后,你打开 vim,看到的界面是这样的。github
注意区分。算法
ctags 的做用是扫描工程中的代码,为代码中定义的函数、变量生成一份 tags 数据库文件,而后咱们用 vim 浏览代码的的时候,当光标移动到某个函数或者变量上,只要按下 Ctrl + ] 组合按键,就会自动跳转到这个函数或者变量定义地方。数据库
ctag 目前有两个版本: Exuberant-ctags 和 Universal-ctags,Exuberant-ctags 比较老,目前已经中止维护, Universal-ctags 则是新版本,一直在更新,功能更强大,支持的语言也更多,因此这里安装新版本。vim
git clone https://github.com/universal-ctags/ctags.git cd ctags git checkout 61cc66cf sudo apt install gcc make pkg-config autoconf automake python3-docutils \ libseccomp-dev libjansson-dev libyaml-dev libxml2-dev ./autogen.sh ./configure make sudo make install
目前只能经过编译源码的方式安装,并且我发现最新的代码有问题,因此回退到了一个可用的版本。curl
ripgrep 是一个超级强大的命令行搜索工具,看名字就知道,它是来挑战 grep 的,它确实比 grep 好用,强大、简单,目前在 github 上超过了一万六千个 star,可见其受欢迎程度。我如今基本用它来代替了 grep 命令。vim 里面也能够用它来结合 LeaderF 插键搜索函数和变量。函数
这个软件目前只能经过下载软件包安装,若是你的系统版本比较新,好比 Ubuntu 18.10 或者 Debian 10,却是能够直接经过 apt install
命令安装。工具
curl -LO https://github.com/BurntSushi/ripgrep/releases/download/11.0.2/ripgrep_11.0.2_amd64.deb sudo dpkg -i ripgrep_11.0.2_amd64.deb
第一条命令是下载 ripgrep_11.0.2_amd64.deb 这个安装包,第二条命令是安装。
vim-pulg 是一个韩国人写的 vim 插件管理器,目前在 github 上也超过了一万六千个 star,下载安装命令以下:
curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
vimrc 是 vim 配置文件,经过它能够定制各类 vim 特性。
这里提供了一个最简配置的的 vimrc 在 github 上: https://github.com/andyshrk/d... ,下载下来放到 ~/.vim/ 目录下。
curl -fLo ~/.vim/vimrc https://raw.githubusercontent.com/andyshrk/dotvim/master/vimrc
配置比较精简, 之简单解释两个地方:
第一部分:安装了四个插件,这四个插件都是 github star 量很是高的开源项目。
第二部分: 设置只有在工程项目的根目录下包含 .root 目录才会自动身材 ctags 数据库,由于若是你有一堆的大工程,都要生成数据库的话,仍是蛮大。在你想深度分析的工程根目录下创建一个 .root 目录,这样有利于节省空间。
vim
而后回车。: PlugStatus
,回车,能够看到全部的插件都处于未安装状态:PlugInstall
, 回车,开始安装插键。: PlugStatus
,回车,能够看到全部固件已经处于 OK 状态。以阅读 Linux 内核代码为例:
在 Linux kernel 的根目录下创建一个 .root 文件夹:
cd linux-imx mkidr .root vim
能够看到,这里面不用输入准确的文件名字,只须要部分关键字,匹配度最高的文件出如今最上面,还能够经过 Ctrl + J 或者 K 上下移动光标, 来选择文件,很高效吧,这是经过 Leaderf 的模糊匹配算法实现的。
光标移动到函数 syscon_regmap_lookup_by_phandle
,按 Ctrl + ] 组合键,就跳到这个函数原型处,按 Ctrl + o 组合键返回。
vim 经过 J K 两个键上下移动光标。
按Ctrl + J 或者 K 上下移动光标, 来选择文件,这里选了atmel-ebi.c 这个文件,而后敲 Enter
键跳过去。
这里直接用了 LeaderfFunction
这个命令,也能够定义成快捷键。
更多的使用技巧能够经过 Leaderf 的 github 查找,或者直接百度也能查到不少用例。
更多原创文章请扫码关注公众号:HackforFun