先上療效,給你們看效果: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