第一個外掛 —— 顔色主題 Colorscheme
前言
俗話說得好:「顏值即是戰鬥力」,好看的配色是工程師寫扣的熱情來源之一,也因此 Neovim 社群至今產出了大量的顏色主題、以及許多用來製作個人顏色主題的外掛工具。
你可以先到我們上一章提到過的 Awesome Neovim 中,去找一套自己喜歡的顏色主題。或者,我更推薦 Trending Neovim Colorschemes 這個網站,除了羅列了許多常見的顏色主題外,還附帶預覽圖,甚是方便。
而本章則只紀錄幾個我常用的顏色主題,包含:
本章主要會使用範例的方式來說明如何下載與啟用顏色主題,如果想直接複製我的設定文件,可以到這裡(我的 github)來複製完整版的內容。
另外,我們將使用 lazy.nvim 來做為外掛管理器下載它們,如果你還不知到什麼是 lazy.nvim 的話,建議先回去看上一章。
下載外掛
首先,我們要先到 imp/plugins/
中新增一個設定文件 colorscheme.lua
。
接著,如果你只要下載一個主題,你可以寫入以下內容:
1 | return { |
或者,如果你和我一樣想下載多個主題來隨時切換,你可以採用這樣的寫法:
1 | local colorscheme = "kanagawa" |
儲存並重新開啟 Neovim 後,你應該會看到 lazy 的介面自動彈出,顯示它偵測到有新的外掛,並正在下載中,且在下載完成後,就會自動套用我們設定的顏色主題了。
plugin spec 參數說明
先前我曾提到過,根據我們的設定,lazy 會訪問 plugins/
中所有的設定文件,並要求它們回傳一至多個 plugin spec,而這也就是這兩個例子的主要差別。
在第一個例子中,我們直接回傳了一個 spec,而在第二個例子中,我們則是回傳了一個由兩個 spec 所組成的列表。
plugin spec 是 lazy 用來描述外掛如何安裝和設定的表格,以第一個例子為例,它包含了以下幾個部分:
- 第一個參數:外掛的下載位址。
spec 的第一個參數必須是外掛的下載位址,預設情況下,它指的是外掛在 Github 上的短網址,例如我們這裡的folke/tokyonight.nvim
,就是 tokyonight 主題的 Github 網址的末兩段。 lazy
:懶加載設定。
一個 boolean 值,當設為true
時,lazy 會只有在 Neovim 運行過程中使用到外掛的功能時,才會將外掛載入運行;反之,則會在 Neovim 啟動時立即加載這個外掛。
有鑑於我們希望 Neovim 在開啟時就載入我們的顏色主題,所以這裡我們將其設定為false
。priority
:加載優先級。
一個整數,當我們的外掛越來越多,加載時自然也就有個先後順序,lazy 預設的priority
是 50,數字越大就越先加載。
有鑑於我們希望顏色主題可以優先於所有外掛啟動,因為有些外掛可以透過引用它們,來更改自己的 UI 設定,所以這裡官方的建議是將它設為 1000。
外掛設定、config、與 opts
在 Neovim 中,慣例而言我們會使用 require("外掛名稱").setup({設定內容})
這個函式來在 Neovim 開啟時啟動外掛,以及將傳入的設定內容與官方預設的設定項進行合併,來作為執行外掛時的設定項。
對此,lazy 在 spec 中提供了兩個參數:config
和 opts
,來將這件事再更簡化一些。
config
1 | { |
讓我們先來看第一個例子,在 lazy 中,config
可以是一個函數,它會在外掛加載後執行。
而在這個例子中,我們透過在函數中呼叫 require("tokyonight").setup({設定內容})
來啟用外掛,並同時對它進行設定。
注意,這個啟用和設定方式只是慣例,大多數常用外掛都是這麼做的,但還是有些不是,例如我所使用的顏色主題之一 sonokai 就不是這樣,所以具體該怎麼用,還是得看官方 Github 上的說明文件,唯一的共通點是,不論方式,你都可以把它寫在 config
之中。
至於設定內容有哪些可以調整,由於各個顏色主題的設定項都大同小異,且都不是特別重要,所以這裡就請各位自己去查看官方文件吧,或是在 Neovim 中輸入指令 :help 主題名稱
,通常都可以找到類似 Configuration 的設定教學文件。
而實際上,我也沒有調整太多東西,其實各主題的預設內容就已經很好用了。
而在 config
的最後,我調用了 vim.cmd.colorscheme(colorscheme)
這個 Lua 函式來將 Neovim 的主題更換成已經啟用的 tokyonight,或者,你也可以使用指令 :colorscheme 主題名稱
來手動套用顏色主題。
opts
1 | { |
接著我們來看第二個例子,config
除了設為函數外,其實還可以設為 true
,而這也是 lazy 預設的選項。
當 config
為 true
時,lazy 會自動呼叫 require("外掛名稱").setup(opts)
來啟用和設定外掛。
所以就有了如上的第二種設定寫法,當外掛是使用上述方法來啟用和設定時,我們就可以不使用 config
參數(因為預設就是 true
了),而是直接把要調整的設定項寫在 opts
中即可,來使得設定文件更加簡潔一些。
不過這個寫法有一個壞處,就是你無法執行除了 setup 以外的其他事情,因為只要你將 config
改為了函數,opts
就會失效,等於你還是得用第一種的方式,來重寫你的設定項。
例如在這個例子中,我們還需要想辦法執行 vim.cmd.colorscheme("顏色主題")
來在每次 Neovim 開啟時自動套用顏色主題,所以,為了設定文件的一致性,我建議還是一律使用 config
來進行設定比較好。
後記
至此就是本章的所有內容了,Neovim 終於染上了自己喜歡的顏色,我們也終於對 lazy 的 plugin spec 有了基本的了解。
而在接下來的系列文中,我將會分成兩大部分:
程式編輯核心外掛:這部分我將會介紹與程式編輯相關的核心外掛,包含自動補齊、語法引擎、語法凸顯、Linter、Formatter 以及 Debugger 等等。
常用功能外掛:這部分我將介紹一些我覺得很好用的功能外掛,包含文件瀏覽器、全域糢糊搜尋、索引標籤與狀態列、以及 Git 集成工具等等。
至於下回預告,我也還不知道,還請各位敬請期待吧。