NeoVim + NvChad - Install & Configure

前言

現在我都把Editor改成NeoVim,並且加裝NvChad來美化

Install

NeoVim

在很多Distrubution上都可以直接安裝

參考網址

Home - Neovim

GitHub - neovim/neovim: Vim-fork focused on extensibility and usability

安裝方法

1
2
3
4
5
6
7
8
# Arch/Manjaro
sudo pacman -S neovim

# Debian/Ubuntu/Linuxmint
sudo apt install neovim

# Fedora
sudo yum install neovim

基本上設定檔都在~/.config/nvim裡面

NvChad

這個基本上就是一個已經被調整好的neovim設定,全部以lua寫的標準功能集成品

簡單的說就是沒有特別安裝其他的東西單純的用lua把原先neovim的內容就可以弄成這樣要是自己想從頭弄自己的版本也是可以參考NvChad的內容自己改

參考網址

Home - NvChad

GitHub - NvChad/NvChad

安裝方法

1
git clone https://github.com/NvChad/starter ~/.config/nvim && nvim

這會把這個設定檔專案clone到使用者home的.config/nvim然後nvim就可以直接套用了

基本上裝好後,初次啟動nvim後會trigger一部分的plugin的安裝界面

COnfigure

基本上只要去改~/.config/nvim/lua/custom/內的東西就好了,因為基礎版本本身就已經很ok了
因為custom目錄在.gitignoe內所以是可以fork原專案並且把改好的custom目錄從自己的repo下載這樣可以容易同步所有的client

Fork & Own Repo for custom

<施工中,待做完後update>

Manual Customize

基本上我只會增加folder的設定,這樣就很夠用了其他的就得先學會lua的語法

~/.config/nvim/lua/custom/chadrc.lua

所有的客製化設定基本上都在這個檔內,並且邏輯是採據custom內的檔案優先形式進行,所以會有以下兩種

全部替代

custom下放置init.lua 這個作法會清除所有NvChad的設定改套用custom/init.lua的設定來進行

部份代替

custom下放置chadrc.lua這個會指定哪些檔案需要被哪個位置的lua替代或增加

但是格式要跟core/defualt_config.lua的格式一樣

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
-- Chadrc overrides this file

local M = {}


M.ui = {
-- hl = highlights
hl_add = {},
hl_override = {},
changed_themes = {},
theme_toggle = { "onedark", "one_light" },
theme = "onedark", -- default theme
transparency = false,
}

--M.plugins = require "custom.plugins"

-- check core.mappings for table structure
M.mappings = require "custom.mappings"
M.folder = require "custom.folder"

return M

像上面的範例中我就把mappings改成我自己的版本然後在加上folder這個設定把vim foldering的功能放進去

另外提一下要在裡面加東西的話

M.XXX = require "custom.XXX"

這個的意思是指定去讀在custom/XXX.lua檔案的意思,所以要記得在對應的位置裡面要有對應的檔案

還有他是override對應的相關設定所以建議是copy core/XXX來修改會比直接寫新的好

修改實例

實際的chadrc.lua

1
2
3
4
5
---@type ChadrcConfig
local M = {}
M.ui = {theme = 'onedark'}
M.folder = require "custom.folder"
return M

folder.lua

1
2
3
4
5
6
vim.cmd('syntax on')
vim.cmd('set foldmarker={{{,}}}')
vim.cmd('set foldmethod=marker')
vim.cmd('set foldlevel=0')
vim.cmd('let php_folding = 1')
vim.cmd('set foldnestmax=3')

基本上lua可以用vim.cmd()的方法把原來的vimrc內的設定檔拿來沿用