Appearance
NvChad是如何工作的?
了解基础知识
在进入这个主题之前, 首先您应该了解 vim.tbl_deep_extend
函数, 该函数用于以递归形式合并tables和它们的值。
- 函数
vim.tbl_deep_extend
通常用于合并两个tables, 其语法如下:
lua
-- table 1
local person = {
name = "joe",
age = 19,
}
-- table 2
local someone = {
name = "siduck",
}
-- "force" 将会覆盖person table中的相同名字的值
local result = vim.tbl_deep_extend("force", person, someone)
-- result :
{
name = "siduck", -- 如你所见,name被覆盖了
age = 19,
}
它甚至可以用于更复杂的tables中. 如前所述, 它以递归的方式运行, 这意味这它对嵌套table值同样生效:
lua
local person = {
name = "joe",
age = 19,
skills = {"python", "java", "c++"}
distros_used = {
ubuntu = "5 years",
arch = "10 minutes",
manjaro = "10 years",
}
}
local someone = {
name = "siduck",
skills = {"js", "lua"},
distros_used = {
ubuntu = "1 month",
artix = "2 years"
}
}
local result = vim.tbl_deep_extend("force", person, someone)
最终的table会合并table中的同名的每个属性, skills
和 distros_used
具有相同的名字:
lua
{
name = "siduck",
age = 19
skills = {"js", "lua"},
distros_used = {
ubuntu = "1 month",
arch = "10 minutes",
manjaro = "10 years",
artix = "2 years"
}
}
-- tbl_deep_extend 函数可以递归合并值, 但是如果有数组 (list), 它并不会合并列表内的值。
-- 比如: 第一个table是 {"python", "java", "c++"},第二个table是 {"js","lua"}.
-- 现在你可能以为合并后的结果是: { "python", "java", "c++", "lua"}
-- 但是并不是! 那样是错误的, 实际的最终结果只有 {"js","lua"}
总而言之, `tbl_deep_extend` 可以递归合并字典表 (即table具有 `key/value` 键值对, 而不是列表)。
⚠️ 注意
tbl_deep_extend
函数只能用于合并字典表,无法用于合并列表。
配置结构
lua
├── init.lua ( main init.lua )
│
├── lua
│ │
│ ├── core
│ │ ├── default_config.lua
│ │ ├── mappings.lua
│ │ ├── utils.lua
│ │ └── init.lua
│ │
│ ├── plugins
│ │ ├── init.lua
│ │ └── configs
│ │ ├── cmp.lua
│ │ └── other configs
│ │
│ │ USER CONFIG
│ │
│ ├── custom *
│ │ ├── chadrc.lua
│ │ ├── init.lua
│ │ ├── more files, dirs
init.lua
- 主配置文件core/default_config
- 返回NvChad中的默认配置选项表(table) 。core/mappings
- 默认 mappingscore/init
- 默认 globals, nvim options, commands, autocmdscore/utils
- 工具函数库。
自定义配置
在 custom 目录中有2个重要的文件,用于扩展NvChad:
custom/chadrc.lua
用于覆盖default_config.lua
文件中的配置。custom/init.lua
在主init.lua
中运行, 它主要包含 vim options, globals, autocmds, commands 等等.
从现在开始, 每当我们谈论路径时, 请记住他们都是 nvim
配置目录(默认应该是 ~/.config/nvim/
)下的lua
目录。
不建议在
custom
目录之外进行更改, 因为 NvChad 配置是一个git仓库, it gitignores 只忽略了custom目录, 而NvChad是使用git pull
来更新配置。custom
目录之外的任何其他文件变更都会被git
视为变更, 这也意味这NvChad无法使用fast-forward模式去拉取。
主题
您可以使用以下键盘映射来查看内置的所有主题: <leader> + th
.
leader
在NvChad中默认是 space,即空格键。
键盘映射
如果您向知道所有的键盘映射,可以运行以下命令:
NvCheatsheet
Telescope keymaps