示例配置¶
不再提供
示例配置在 NvChad 安装过程中不再提供,因此此页面已过时,将在新版本指南中删除。 指示将尽快更新。
简介¶
NvChad 2.0 版本引入了在安装阶段创建 自定义 文件夹的功能。 它的创建是通过修改其文件来定制编辑器的起点。 在引导时安装它允许编辑器在第一次启动时拥有 IDE 的基本功能,但也可以在安装 NvChad 之后包含它。
它安装最重要的方面是为包含一些高级功能(如语言服务器、linters 和格式化程序)创建基本结构。 这些结构允许在稍作修改的情况下将必要的功能集成。
该文件夹是从 NvChad 的 GitHub 存储库中的示例文件夹创建的:(example-config)。
安装¶
要在安装过程中创建它,在安装开始时回答“y”到我们被问到的问题。
你想安装示例自定义配置吗? (y/N)
肯定的答案将启动一个过程,该过程会将 example-config 文件夹的内容从 GitHub 克隆到 ~/.config/nvim/lua/custom/,并在完成后,将从其中删除 .git 文件夹。
删除它允许将文件夹放在个人版本控制下。
该文件夹已准备就绪,将在下次启动 NvChad 时使用,以便将自定义配置输入编辑器。
由 example-config 提供的配置安装也可以在安装 NvChad 之后完成,在这种情况下,仍然使用该存储库,但通过手动操作进行检索。
没有 example-config 的标准安装仍然会创建一个 custom 文件夹,在其中保存用于用户自定义的 chadrc.lua 文件,并且应将其删除或保存在 备份 中以允许克隆运行。 然后使用以下命令保存现有配置
mv ~/.config/nvim/lua/custom/ ~/.config/nvim/lua/custom.bak
并将 GitHub 存储库克隆到您的配置
git clone https://github.com/NvChad/example_config.git ~/.config/nvim/lua/custom
该命令将在线找到的整个存储库内容复制到 ~/.config/nvim/lua/custom/
文件夹,复制隐藏的 .git
文件夹,您必须手动删除该文件夹以允许切换到个人版本控制。 为了删除它,运行以下命令
rm rf ~/.config/nvim/lua/custom/.git/
该文件夹已准备就绪,将在下次启动 NvChad 时使用,以便将自定义配置输入编辑器。
结构¶
custom 文件夹的结构包含几个配置文件和一个 configs
文件夹,其中包含在 plugins.lua 中设置的插件选项文件。
使用单独的文件进行插件设置可以让您拥有更加简化的 plugins.lua 文件,并且只在自定义插件代码时进行操作。 这也是开发您稍后将添加的插件的推荐方法。
创建的结构如下所示
custom/
├── chadrc.lua
├── configs
│ ├── conform.lua
│ ├── lspconfig.lua
│ └── overrides.lua
├── highlights.lua
├── init.lua
├── mappings.lua
├── plugins.lua
└── README.md
正如我们所看到的,该文件夹包含一些具有相同名称的文件,这些文件也出现在 NvChad 的基本结构中。 这些文件允许您集成配置并覆盖编辑器的基本设置。
结构分析¶
现在让我们继续检查它的内容
主要文件¶
chadrc.lua¶
---@type ChadrcConfig
local M = {}
-- Path to overriding theme and highlights files
local highlights = require "custom.highlights"
M.ui = {
theme = "onedark",
theme_toggle = { "onedark", "one_light" },
hl_override = highlights.override,
hl_add = highlights.add,
}
M.plugins = "custom.plugins"
-- check core.mappings for table structure
M.mappings = require "custom.mappings"
return M
该文件由 ~/.config/nvim/lua/core/utils.lua 文件中设置的 load_config
函数插入到 Neovim 配置中。该函数负责加载默认设置,如果存在,还会加载 custom 文件夹中的 chadrc.lua 文件的设置。
M.load_config = function()
local config = require "core.default_config"
local chadrc_path = vim.api.nvim_get_runtime_file("lua/custom/chadrc.lua", false)[1]
...
其功能是将 custom 文件夹中的文件插入到 NvChad 配置中,然后使用这些文件以及默认文件启动 Neovim 实例。这些文件通过 require
函数插入到配置树中,例如
require("custom.mappings")
字符串 custom.mappings 表示文件相对于默认路径的相对路径,不包含扩展名,在本例中为 ~/.config/nvim/lua/。点号替换斜杠,因为这是 Lua 代码中的惯例(在 lua 语言 中没有 目录 的概念)。
总之,我们可以说上面的调用将 custom/mappings.lua
文件中编写的配置插入到 NvChad 映射中,从而插入调用 custom/plugins.lua
中设置的插件命令的快捷方式。
该文件中的一个部分还覆盖了 core/default_config.lua
中包含的一些 NvChad 用户界面配置设置,特别是 M.ui 部分,它允许例如选择浅色或深色主题。
在文件末尾设置了对 custom/plugins.lua
文件的 require 调用,该文件对应于字符串
M.plugins = "custom.plugins"
这样,在 custom/plugins.lua
中设置的插件将与构成 NvChad 配置的插件一起传递给 lazy.nvim 以进行安装和管理。在本例中,包含不在 Neovim 树中。相反,它是在 lazy.nvim 的配置中,因为这个插件通过调用 vim.go.loadplugins = false
完全禁用了相关的编辑器功能。
init.lua¶
该文件用于覆盖 core/init.lua
中定义的设置,例如缩进或交换写入间隔,以写入磁盘。它还用于创建自动命令,如文件中注释行所述。一个例子可能是下面的例子,其中包含了一些用于编写 Markdown 文档的设置
--local autocmd = vim.api.nvim_create_autocmd
-- settings for Markdown
local opt = vim.opt
opt.tabstop = 4
opt.softtabstop = 4
opt.shiftwidth = 4
opt.shiftround = false
opt.expandtab = true
opt.autoindent = true
opt.smartindent = true
-- Auto resize panes when resizing nvim window
--autocmd("VimResized", {
-- pattern = "*",
-- command = "tabdo wincmd =",
-- })
这在其他方面将 2 个空格的制表符替换为 4 个空格的制表符,更适合 Markdown 代码。
plugins.lua¶
该文件设置要添加到基本 NvChad 配置中的插件。在专门介绍 插件管理器 的页面上详细解释了添加插件。
由 example-config 创建的 plugins.lua 文件在其第一部分中包含一些自定义设置,这些设置会覆盖插件定义选项和默认插件配置。我们不需要修改文件这部分,因为开发人员已经为此准备了专门的文件,这些文件位于 config 文件夹中。
接下来是插件的安装。它被创建为一个示例,以便您可以熟悉 lazy.nvim 使用的格式。
-- Install a plugin
{
"max397574/better-escape.nvim",
event = "InsertEnter",
config = function()
require("better_escape").setup()
end,
},
您可以在此插件之后以及最后一个括号之前插入所有其他插件。存在适用于每个目的的整个插件生态系统。您可以访问 Neovimcraft 获得第一个概述。
mappings.lua¶
该文件用于将映射(键盘快捷键)包含到配置树中,这些映射用于调用其他插件命令。
这里也提供了一个示例设置,以便可以研究其格式
M.general = {
n = {
[";"] = { ":", "enter command mode", opts = { nowait = true } },
},
}
此映射用于 NORMAL 状态 n =
字符 ;,当在键盘上按下时,会播放字符 :。此字符是用于进入 COMMAND 模式的字符。还设置了 nowait = true
选项以立即进入该模式。这样,在使用 US QWERTY 布局的键盘上,我们就无需使用 Shift 进入 COMMAND 模式。
提示
对于欧洲键盘用户(如意大利语键盘),建议将字符 ; 替换为 ,。
highlights.lua¶
该文件用于自定义编辑器的样式。这里编写的设置用于更改字体样式(粗体,斜体)、元素的背景颜色、前景色等。
Configs 文件夹¶
该文件夹包含 custom/plugins.lua 文件中使用的所有配置文件,用于更改处理语言服务器(lspconfig)、linter/格式化程序(conform)的插件的默认设置,以及用于覆盖 treesitter、mason 和 nvim-tree 的基本设置(override)。
configs/
├── conform.lua
├── lspconfig.lua
└── overrides.lua
lspconfig.lua¶
lspconfig.lua 文件设置编辑器可以使用的本地语言服务器。这将允许支持文件的更高级功能,例如自动完成或代码段,以快速创建代码片段。要将我们的 lsp 添加到配置中,我们只需编辑由 NvChad 开发人员专门准备的表(在 lua 中,下面用大括号表示的表是一个表)
local servers = { "html", "cssls", "tsserver", "clangd" }
正如我们所见,一些服务器已默认设置。要添加一个新的服务器,请将其添加到表的末尾。可以在 mason packages 中找到可用的服务器,有关其配置,您可以参考 lsp server configurations。
例如,如果我们还想要支持 yaml
语言,我们可以像下面的例子一样添加它
local servers = { "html", "cssls", "tsserver", "clangd", "yamlls" }
但是,更改文件并不涉及安装相关的语言服务器。这必须使用 Mason 单独安装。为 yaml 提供支持的语言服务器是 yaml-language-server,我们必须使用命令 :MasonInstall yaml-language-server
安装它。此时,例如,我们将可以控制 Rocky Linux 文档页面标题(frontmatter)中编写的代码。
conform.lua¶
该文件配置了一些功能,这些功能旨在控制和格式化编写的代码。编辑此文件需要比上一个文件进行更多配置方面的研究。可以在 内置页面 上找到可用的组件概述。
同样,创建了一个表,即 formatters_by_ft 表,用于输入自定义设置
--type conform.options
local options = {
lsp_fallback = true,
formatters_by_ft = {
lua = { "stylua" },
javascript = { "prettier" },
css = { "prettier" },
html = { "prettier" },
sh = { "shfmt" },
},
}
如您所见,初始配置中只包含标准格式化程序。您可能需要 Markdown 语言的格式化程序,在这种情况下,您可以添加,例如 Markdownlint
markdown = { "markdownlint" },
同样,配置需要安装相应的包,这可以通过 Mason 完成
:MasonInstall markdownlint
注意
此格式化程序的配置还需要在您的主文件夹中创建一个配置文件,这在本说明文档中不会介绍。
overrides.lua¶
overrides.lua 文件包含对默认插件设置的更改。要应用更改的插件在 custom/plugins.lua
文件的 -- 覆盖插件定义选项 部分中通过使用 **opts** 选项指定(例如:opts = overrides.mason
)。
在初始配置中,有三个插件被标记为需要覆盖,它们是 treesitter、mason 和 nvim-tree。暂且不考虑 nvim-tree,我们将重点关注前两个插件,它们可以显著改变我们的编辑体验。
treesitter 是一个代码解析器,它以交互的方式处理代码的格式。每当我们保存 treesitter 识别的文件时,它就会被传递给解析器,解析器返回一个最佳缩进和高亮的代码树,使其更容易在编辑器中阅读、解释和编辑代码。
处理此问题的代码部分如下所示:
M.treesitter = {
ensure_installed = {
"vim",
"lua",
"html",
"css",
"javascript",
"typescript",
"tsx",
"c",
"markdown",
"markdown_inline",
},
indent = {
enable = true,
-- disable = {
-- "python"
-- },
},
}
现在,按照之前给出的示例,如果我们希望 Rocky Linux 上文档页面的 frontmatter 正确高亮显示,我们可以在最后一个解析器集之后,在 ensure_installed
表中添加对 yaml 的支持:
...
"tsx",
"c",
"markdown",
"markdown_inline",
"yaml",
...
下次我们打开 NvChad 时,刚刚添加的解析器也会自动安装。
为了直接在运行的 NvChad 实例中使用解析器,我们也可以在没有编辑文件的情况下,使用以下命令安装它:
:TSInstall yaml
文件中接下来是关于 Mason 安装服务器的部分。此表中设置的所有服务器都将在一次操作中使用命令 :MasonInstallAll
安装(此命令在创建 custom 文件夹时也会被调用)。该部分如下所示:
M.mason = {
ensure_installed = {
-- lua stuff
"lua-language-server",
"stylua",
-- web dev stuff
"css-lsp",
"html-lsp",
"typescript-language-server",
"deno",
"prettier",
},
}
同样,按照最初的示例,我们通过手动安装服务器来启用 yaml 支持,我们可以通过将其添加到表中来确保始终安装它:
...
"typescript-language-server",
"deno",
"prettier",
-- yaml-language-server
"yaml-language-server",
...
虽然在运行的 NvChad 实例中,这方面可能并不重要,因为我们总是可以手动安装缺少的服务器,但它在将配置从一台机器迁移到另一台机器时非常有用。
例如,假设我们已经配置了 custom
文件夹,并且想要将其迁移到另一台 NvChad 安装中。如果我们已经配置了此文件,在复制或克隆我们的 custom
文件夹后,执行 :MasonInstallAll
就足以让所有服务器在另一台安装中准备使用。
配置的最后一部分,即 M.nvimtree
部分,负责配置 nvim-tree,通过启用该功能来显示有关 Git 存储库的文件树状态。
git = {
enable = true,
},
它们的突出显示和相应的图标。
renderer = {
highlight_git = true,
icons = {
show = {
git = true,
},
},
},
结论¶
NvChad 2.0 中引入了在第一次安装时创建 custom
文件夹的功能,这对于所有第一次使用此编辑器的人来说无疑是一个很大的帮助。对于已经使用过 NvChad 的用户来说,这也是一个节省时间的方法。
由于引入了此功能并使用了 Mason,集成自己的功能变得直观快捷。只需进行一些更改,您就可以立即使用 IDE 来编写代码。
作者:Franco Colussi
贡献者:Steven Spencer、Ganna Zhyrnova