你值得擁有的上古神器:vim
推薦理由:一個完全不需要借助鼠標(biāo)就可以完成所有操作的編輯器
前言
筆者并不是 vim 高手,也只是最近在 github 發(fā)現(xiàn)的一個開箱即用的 vim 配置,所以在這里分享出來,所以本文并不會講解如何去配置一個專屬的 vim,對于長期使用 vim 的朋友來說,我這篇文章過于簡單了。之所以決定寫這篇文章,也是因為自己在第一次聽說 vim 并了解到它的強大之后,畫了好些時間去研究如何配置一個屬于自己的 vim ,但是結(jié)果都不盡人意,不過這也是因為我太菜的原因哈哈,許多插件的配置比較復(fù)雜,對于很多初次使用 vim 的朋友,可能在配置 vim 的時候就感覺到不容易,所以也就放棄了,曾經(jīng)的我也是這樣,直到我遇到了它:vimplus。vimplus 目前還不兼容 window,還不能在 windows 上進(jìn)行安裝,但是如果想要在 windows 上進(jìn)行使用的話可以在 windows10 上安裝 ubuntu 的子系統(tǒng),筆者已經(jīng)試過可行。
效果圖
在講解如何使用之前,有必要貼兩張效果圖:如上圖所示,最左邊的是目錄樹,中間的是打開的文件,而最右邊是當(dāng)前文件所包含的宏,函數(shù)列表以及該文件所定義的所有的變量。當(dāng)然在寫代碼的時候,你也可以將左右兩邊的狀態(tài)欄關(guān)閉,如下圖所示:好了,廢話不多講,在接下來的步驟里教你如何一步一步地將 vim 用起來。
安裝
筆者的目前使用的操作系統(tǒng)版本是:ubuntu 18.04 vimplus 的 github 地址是:https://github.com/chxuan/vimplus,安裝方式很簡單,在這之前需要安裝 vim ,由于我們在使用的過程中經(jīng)常需要將代碼里的內(nèi)容拷貝出來,這里推薦安裝 vim-gnome,安裝方式如下:
sudo apt-get install vim-gnome
git clone https://github.com/chxuan/vimplus.git ~/.vimplus
cd ~/.vimplus
./install.sh
在安裝的過程當(dāng)中,會讓你選擇是用 Python3 還是Python2 來進(jìn)行編譯,筆者在這里選擇 Python3 選擇編譯。在安裝好之后,為防止 vimplus 亂碼,必須設(shè)置 ubuntu 的終端字體為 Droid Sans Mono Nerd Font ,只需要在終端進(jìn)行設(shè)置就好,無需下載字體,比較簡單,在這里不進(jìn)行講解。
使用
頭文件問題
在安裝好了之后,就可以用 vim 打開一個工程了,在終端切換到當(dāng)前要打開的工程目錄之后,采用如下的方式打開,vim 后面空一格加一個 . 表示打開當(dāng)前目錄下的所有文件
~/rt-thread-3.1.3$ vim .
這里我們打開一個 rt_thread 的工程為例,初次打開時,會出現(xiàn)一部分頭文件找不到的情況,如下圖所示的紅色字體:出現(xiàn)這個問題的原因是頭文件的路徑?jīng)]有包含進(jìn)去,解決辦法時需要 .vimplus 目錄下的一個文件拷貝到當(dāng)前工程下,然后對拷貝過去的文件做修改,要拷貝的文件如下圖所示:現(xiàn)在我要打開的工程是 rt-thread-3.1.3 ,那么文件就拷貝到這個目錄下,然后在再在這個文件里加入頭文件路徑,因為當(dāng)前工程下的 include 以及 include 中的 libc 里的頭文件沒有包含,所以加入的內(nèi)容如下:加入路徑之后,就能找到了,這里要注意的是每一個路徑的前面必須加入 ‘-isystem’,否則路徑加入失敗,在加入路徑之后,這些標(biāo)紅的頭文件也就消失了。
tags 文件
我們回顧在使用 keil 等集成開發(fā)環(huán)境的時候,在閱讀代碼的時候,需要在函數(shù)的調(diào)用和函數(shù)的實現(xiàn)實現(xiàn)跳轉(zhuǎn),在 vim 里也是可以實現(xiàn)的,vim 里實現(xiàn)跳轉(zhuǎn)需要在當(dāng)前工程目錄下具有 tags 文件,所以我們需要在終端生成 tags 文件,輸入以下命令在終端生成 tags 文件,
~/rt-thread-3.1.3$ ctags -R
有了 tags 文件之后,我們就可以在 vim 的左邊打開函數(shù)列表名、變量以及宏定義的列表,打開的方式是使用快捷鍵 <,> +<t>
其中<>里的表示鍵盤的符號,+號表示的是兩者同時按下,如果再同時按下 <,> +<n>
,那么將出現(xiàn)工程的目錄,也就是我在本篇文章里的第一張圖那樣子,在進(jìn)行切換操作時,也可以完全不用鼠標(biāo)就可以完成,使用 <Ctrl>+<w>+ 方向鍵
就可以將光標(biāo)移動至任何一個窗口,這里方向鍵分別是 hjkl
,在這里比較簡單不做詳細(xì)介紹,可以上網(wǎng)了解如何使用方向鍵。要實現(xiàn)函數(shù)跳轉(zhuǎn),還需要做一件事才行,在打開的 vim 工程里的命令行里輸入如下命令后回車:
:set tags=/home/wenzi/rt-thread-3.1.3/tags
注意等號的左右兩邊不能存在空格,其中每次打開工程都需要輸入上述命令,等號右邊是當(dāng)前工程下的 tags 文件的路徑,如果當(dāng)前工程是需要經(jīng)常打開的工程,也可以將上述命令直接加入到 vimplus 里的 .vimrc 文件里。這里如何進(jìn)入 vim 的命令行,沒有用過 vim 的朋友可能不太了解,在進(jìn)入 vim 后在英文輸入模式下輸入 :
就可以實現(xiàn),vim 的命令行在 vim 的最底端,如下圖所示:在進(jìn)行了上述命令行的輸入之后,就可以進(jìn)行函數(shù)的跳轉(zhuǎn)了,將光標(biāo)移動到要跳轉(zhuǎn)的函數(shù)處,用快捷鍵 <Ctrl>+ <]>
("]"時方括號的一部分)就可以實現(xiàn)跳轉(zhuǎn),如果要跳回來,用 <Ctrl>+<t>
就可以跳回來。
開多個窗口
在有時候,我們在跳轉(zhuǎn)到函數(shù)實現(xiàn)的時候,又想看函數(shù)調(diào)用這邊的代碼怎么辦呢,可以開多個窗口的方法實現(xiàn),比如我先在當(dāng)前頁面輸入 :vsp
,將窗口分為豎著的兩個(也可以輸入 :sp
,將窗口分為橫著的兩個)之后,再實現(xiàn)跳轉(zhuǎn)就可以了,效果如下圖所示:如果還想繼續(xù)往下跳,還可以再分出一個窗口,如下圖所示:總之,在能看清的條件下,窗口數(shù)任由你開,想要關(guān)閉窗口時,在 vim 的命令行里輸入 :q!
就可以依次關(guān)閉窗口。
頭文件跳轉(zhuǎn)及搜索
在使用 keil 時,我們有時需要跳轉(zhuǎn)到頭文件里去看頭文件的代碼,vim 也是能夠?qū)崿F(xiàn)的,將光標(biāo)定位到需要跳轉(zhuǎn)的頭文件處,按下快捷鍵 <,> + o
就可以完成跳轉(zhuǎn),如果要跳回來,按下 <Ctrl>+ n
或者 <Ctrl>+ p
就可以跳回來。如何進(jìn)行搜索呢,按下 <Ctrl>+ F
后,在 vim 命令行會出現(xiàn)提示,在這里輸入要搜索的字符串即可,在這里要等待一下,因為它會跳轉(zhuǎn)到 ubuntu 的終端進(jìn)行搜索完之后再跳回 vim,搜索結(jié)果如下圖所示:在下方的搜索結(jié)果選擇要查看的內(nèi)容然后回車就可以查看,關(guān)閉的方法同樣時輸入 :q!
輸入
在這里筆者不講解輸入的基本操作,比較常規(guī),一些比較快捷的輸入方法筆者現(xiàn)在也還在慢慢地去掌握,還不熟練,但是常規(guī)的輸入還是比較簡單的,這里之所以要說,是因為最開始配置好的 vim 在普通模式和插入模式下光標(biāo)都是一個小方塊,看著很不舒服,筆者在這里改動了一下,普通模式光標(biāo)是小方塊,插入模式是豎線,修改的方法是在 .vimplus 文件夾下的 .vimrc 文件下的末尾加上這么一段代碼:
let &t_SI.="\e[5 q" "SI = INSERT mode
let &t_SR.="\e[4 q" "SR = REPLACE mode
let &t_EI.="\e[1 q" "EI = NORMAL mode (ELSE)
自動補全
vimplus 所帶的 YoucompleteMe 插件的自動補全功能很強大,在補全出現(xiàn)時,可以通過按 <Ctrl>+ n
來進(jìn)行選擇要輸入的字符串,比如如下圖片:
總結(jié)
上述就是關(guān)于 vimplus 的基本使用,vim 的學(xué)問很深,也以學(xué)習(xí)曲線陡峭而著稱,筆者現(xiàn)在也只是初級水平,僅僅初級水平也能感受到 vim 的強大,用好 vim 是需要一個長期積累的過程,但是在學(xué)習(xí) vim 的過程中,我也在提醒自己,”好的編輯器能提升效率,提高專注度,但是終歸只是編輯器,衡量一個程序員的水平仍舊是寫代碼的實力,而不是制造 bug 的速度“,最后,在使用 vimplus 遇到問題的時候,可以到 github 上給 vimplus 的作者提 issure ,作者很熱心,回復(fù)的很及時,并且?guī)椭臋n很詳細(xì)。
您的閱讀是對我最大的鼓勵,您的建議是對我最大的提升,歡迎點擊下方圖片進(jìn)入小程序進(jìn)行評論
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!