從零開始配置vim(0)——vimscript 簡介

通過之前一系列的文章,相信各位小伙伴應該已經對vim產生了濃厚的興趣,可能不少小伙伴通過慢慢的使用變的跟我一樣,離開vim就不會寫代碼了。如果你希望繼續長時間使用vim,甚至將vim作為主要的代碼編輯器,那么花一定的時間來學習vim的配置是很有用的。如果你只是因為 linux 平臺默認安裝了 vi/vim ,平時又主要用它改改匹配文件,臨時用用,那么還是趕緊退出這個文章,免得耽誤時間吧。

標題上說從零基礎打造vim多少有點標題黨,要理解后面一系列文章的內容至少要了解vim里面的一些基本概念,我認為在閱讀本系列專欄之前,你應該了解以下內容

  1. 知道vim,并且知道 vim 的基本操作,例如進入插入模式、移動光標,并且知道如何保存退出
  2. 知道vim的相關術語,緩沖區列表、緩沖區、窗口、命令模式、插入模式等等
  3. 知道 vim的配置文件在哪

如果你還不知道,請移步我的專欄,跟著專欄中的內容做做實驗。理解一下里面提到的這些概念。

關于配置部分,我準備介紹以下幾個方面的內容:

  1. vimscript 的基礎內容,并補充一些之前沒介紹過的vim的特性
  2. neovim lua對應的接口
  3. 推薦一些插件和相關配置,做到拋磚引玉

可能有小伙伴要問了,vimscript 不管寫還是讀都比較晦澀,而且 neovim 已經采用更容易理解也更加現代化的 lua了,有必要學習 vim script嗎?

我覺得是有必要的,首先 neovimvim 的另一個實現版本,要想學好 neovim 自然繞不開 vim,而學好 vim 自然也繞不開 vimscript 。其次,lua 腳本中的接口繼承自 vimscript 。想要使用 lua 配置的前提是知道使用 vimscript 配置。它們就好像學習 MFC 繞不開 Win32 API 一樣。所以我覺得想要學習 neovim 的配置自然繞不開 vimscript 。而且 neovim 完全兼容 vim 基本不用擔心 vimscriptneovim 中執行不了的問題。 倒是 neovim 并沒有實現 vimscript 百分之百的功能,有些時候還是得靠 vimscript 來實現。

演示環境

之前一系列的文章本來打算在 mac 上做演示的,但是我發現 mac上錄屏比較麻煩,而且 mac上的 neovim 我已經配置好了,行為上可能跟裸 vim 有些差距(雖然可以不加載配置文件啟動),所以我采用 WSL2 Ubuntu上的 neovim做演示。

剛好這個演示環境沒有對vim進行過配置。也方便演示從0開始配置。

本教程的環境是 linux中 neovim0.6.1 版本,雖然官方已經放出來 0.8 版本,但是Ubuntu官方源中好像還是 0.6。這里就繼續用它演示吧

第一個 vimscript 腳本

我學習的任何一門語言好像都是從打印 hello world 開始的,我也不能免俗。我們這個教程也從打印 hello world 開始吧

vimscript 中可以使用 echoechom 來打印語句,例如我們可以在命令模式中輸入 echo "hello world"。我們發現在屏幕的下方出現了 hello world 字樣。

1.gif

接著我們再使用 echom "hello world" 發現,它仍然在下方打印了 hello world 字樣。這兩者有什么區別呢?

要理解它們的區別我們需要介紹一個新的命令 :message 。這條命令可以查看 message-history 中的內容,我們可以簡單的將這條命令理解為查看 vim 的運行日志(雖然并不是在查看日志)。執行這條命令我們發現,message-history 中只有一條 hello world。這個時候他們的區別就出來了,一個在打印的同時會將打印信息寫入 message-history,另一個就僅僅只是打印而已。

2.gif

各位小伙伴只需要簡單打印不同的語句就能知道 echom 會將內容寫入到日志中,而 echo 不會。這里留個各位自己去實驗吧,我就不做演示了。

我們現在來完成一個小練習,使用vim腳本來寫一段歡迎信息例如 hello, jack, 我們讓用戶每次打開都能看到這個歡迎信息 。這里的用戶我們暫時讓它固定,后續我們可以做到動態的修改 歡迎的用戶。

我們知道每次打開vim,它都會去加載配置文件,我們只要將要執行的命令寫到配置文件中就好了。還記得配置文件在哪嗎?針對 neovim 來說它支持 vimscriptlua 配置(當然它也支持其他語言)。我們將目錄切換到 ~/.config/nvim 。如果各位小伙伴之前有過配置,那么請先將配置做一個備份。同時確保 init.lua (lua配置)和 init.vim (vimscript 配置) 只能有一個

我們先嘗試著用 vimscript 的方式來完成這個功能。我們建立一個新文件 ~/.config/nvim/init.vim。然后在里面寫上一句 echo 'hello, jack',然后退出。我們發現每次進入 neovim 之后,總會在下方顯示這么一句話了。

3.gif

4.gif

我們再來看看如何使用 lua 來打印這么一句話呢?lua 中對應的函數是 print 。我們可以直接在 之前備份的 init.lua 中寫上 print("hello, jack") 來完成這一個工作(記得現將之前的 init.vim 備份)。需要注意的是 lua 中的 print 寫將信息一并寫入到 message 中,也就是說它與 echom 效果相同。如果想執行 echo 操作可以使用 api.vim.nvim_echo() 。它的用法比較復雜,這就就不介紹它了,有興趣的小伙伴可以去官網查一下,試試用它來實現這個打印歡迎信息的例子。

5.gif

這篇文章的內容到此就結束了,最后給大家做一個總結:

  1. neovim如果想要加載 vimscript配置,可以將配置文件放到 ~/.config/nvim/init.vim 中,如果想要加載 lua 配置,可以將文件放到 ~/.config/nvim/init.lua 中。
  2. echoechom 都會打印字符串,不同的是 echom 將打印的內容往一個叫做 message-history 的地方寫。lua 中的 print 具備 echom的功能
  3. 可以使用 message 命令查看 message-history 的內容
  4. vimscript 的使用上看,它里面寫的是vim的一些命令,我們將命令寫在文件中讓vim去執行。vim命令與 vimscript 的關系有點像 shell 命令和 shell 腳本的關系
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,606評論 6 533
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,582評論 3 418
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,540評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,028評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,801評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,223評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,294評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,442評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,976評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,800評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,996評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,543評論 5 360
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,233評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,662評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,926評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,702評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,991評論 2 374

推薦閱讀更多精彩內容