将 Neovim 变成高级 IDE¶
先决条件¶
如 NvChad 网站上所述,您需要确保系统满足以下要求
- Neovim 0.10.0.
- Nerd 字体 在您的终端模拟器中设置它。
- 确保您设置的 Nerd 字体不以 **Mono** 结尾
- **示例:**Iosevka Nerd 字体,而不是
Iosevka Nerd Font Mono
- Ripgrep 是使用 Telescope 进行 grep 搜索所必需的 **(可选)**。
- GCC 和 Make
执行干净安装
如要求中所述,在以前版本的基础上安装此新配置可能会导致无法解决的问题。建议进行干净安装。
预备操作¶
如果您以前使用过 Neovim 安装,它会在其中写入文件的三个文件夹中创建了三个文件夹,分别是
~/.config/nvim
~/.local/share/nvim
~/.cache/nvim
要执行配置的干净安装,我们需要首先备份上一个配置
mkdir ~/backup_nvim
cp -r ~/.config/nvim ~/backup_nvim
cp -r ~/.local/share/nvim ~/backup_nvim
cp -r ~/.cache/nvim ~/backup_nvim
然后,我们删除所有以前的配置和文件
rm -rf ~/.config/nvim
rm -rf ~/.local/share/nvim
rm -rf ~/.cache/nvim
安装¶
配置结构的创建是通过使用 Git 从初始化存储库 (starter) 中复制文件来实现的。这种方法允许在 lazy.nvim 插件管理器中安装 NvChad 配置,该配置作为 Neovim 插件准备。
通过这种方式,配置像所有其他插件一样更新,简化了用户的管理。此外,这种方法使整个用户配置独立,允许在多台机器之间对其进行完全管理和分发。
要下载和初始化配置,请使用以下命令
git clone https://github.com/NvChad/starter ~/.config/nvim && nvim
该命令包含两部分。第一部分将 starter 存储库的内容下载到 ~/.config/nvim/
(Neovim 设置的默认文件夹),而第二部分调用 nvim 可执行文件,该文件使用您刚刚下载的配置初始化编辑器。完成插件和解析器的安装后,您将看到以下屏幕。要关闭插件管理器,请键入 q
初始配置非常少,并为您的自定义提供了一个起点。如编辑器首次启动时屏幕截图所示,仅加载了四个模块 (plugins),并用复选标记标记,如下所示
- base46 - 提供编辑器主题
- NvChad - 允许用户配置输入 Neovim 的基本配置
- nvim-treesitter - 用于代码分析和突出显示
- ui - 编辑器界面(状态栏、标签行..)
剩余的模块将在请求模块提供的功能时激活,这要归功于 lazyloading 技术。这通常提高了编辑器的性能,特别是改善了其启动时间。
此时,编辑器已准备好使用。以下部分将深入介绍安装过程,这些部分对于日常使用来说并非必需。如果您只对使用感兴趣,可以转到 使用 NvChad 页面。
但是,仍然建议阅读 官方文档 以了解其组件和功能的介绍。
要关闭编辑器,请使用键 : q。
引导¶
引导过程在init.lua文件中实现,该文件位于starter仓库中,包含以下步骤:
初始设置默认主题路径和<leader>
键,在本例中为空格键
vim.g.base46_cache = vim.fn.stdpath "data" .. "/nvchad/base46/"
vim.g.mapleader = " "
随后安装主要lazy.nvim插件
-- bootstrap lazy and all plugins
local lazypath = vim.fn.stdpath "data" .. "/lazy/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
local repo = "https://github.com/folke/lazy.nvim.git"
vim.fn.system { "git", "clone", "--filter=blob:none", repo, "--branch=stable", lazypath }
end
vim.opt.rtp:prepend(lazypath)
local lazy_config = require "configs.lazy"
以及安装NvChad插件和plugins
文件夹中配置的所有插件
-- load plugins
require("lazy").setup({
{
"NvChad/NvChad",
lazy = false,
branch = "v2.5",
import = "nvchad.plugins",
config = function()
require "options"
end,
},
{ import = "plugins" },
}, lazy_config)
然后将主题应用于default和statusline设置
-- load theme
dofile(vim.g.base46_cache .. "defaults")
dofile(vim.g.base46_cache .. "statusline")
完成后,配置操作和键盘映射所需的autocmds(Neovim 自动命令)也会输入
require "nvchad.autocmds"
vim.schedule(function()
require "mappings"
end)
配置结构¶
NvChad 安装的结构如下所示:
~/.config/nvim/
├── init.lua
├── lazy-lock.json
├── LICENSE
├── lua
│ ├── chadrc.lua
│ ├── configs
│ │ ├── conform.lua
│ │ └── lazy.lua
│ ├── mappings.lua
│ ├── options.lua
│ └── plugins
│ └── init.lua
└── README.md
它包含一个启动文件init.lua,该文件初始化并协调将自定义项插入Neovim配置的过程,该文件最初与上面显示的starter仓库中使用的bootstrap文件相同,它将用于之后将其他文件(如自身的autocommands.lua文件)加载到配置中。
接下来是lazy-lock.json文件,其中包含所有安装的插件及其在GitHub上开发状态的信息。此文件允许编辑器状态在多台机器上的安装之间同步,并允许自定义安装复制所需的状态。
其余配置位于lua
文件夹中,并从chadrc.lua文件开始初始化,该文件在初始版本中仅包含编辑器主题设置。
此文件用于自定义编辑器的外观(UI),并与nvconfig.lua文件(NvChad插件)具有相同的语法;要编译它,只需将nvconfig.lua文件中所需的部分复制到您的chadrc.lua中,并根据需要更改其属性。
配置使用的下一个文件(文件夹将在后面描述)是option.lua文件,用于编辑器自定义,例如缩进空格、与访客系统共享剪贴板,以及非常重要的将Mason安装的二进制文件包含在路径中。
与上一个文件一样,它共享对应文件(NvChad插件)的语法;要进行上述自定义,只需复制选项并进行编辑即可。
最后,遇到mapping.lua文件,在这里设置键盘键以调用编辑器提供的各种功能。初始文件包含用于进入COMMAND模式、使用conform.nvim格式化以及退出INSERT模式的键映射。
这些键使用 Neovim 原生的vim.keymap.set
语法,您可以参考 NvChad 的默认映射或 Neovim 中的帮助页面:h vim.keymap.set
进行配置。
require "nvchad.mappings"
-- add yours here
local map = vim.keymap.set
map("n", ";", ":", { desc = "CMD enter command mode" })
map("n", "<leader>fm", function()
require("conform").format()
end, { desc = "File Format with conform" })
map("i", "jk", "<ESC>", { desc = "Escape insert mode" })
配置中包含的两个文件夹configs
和plugins
都用于管理插件;个人插件应放在plugins
文件夹中,而其额外的配置(如果有)应放在configs
文件夹中。
最初,将提供一个plugins/init.lua文件,用于安装conform.lua插件(在configs/conform.lua中配置)和nvimtree.nvim插件(其中包含与Git相关的装饰选项)。
插件的组织
插件的包含是通过插入plugins
文件夹中存在的任何经过正确配置的文件来完成的,这允许对插件进行组织,例如按用途进行组织,通过在该文件夹中创建单独的文件(utils.lua、editor.lua、markdown.lua等),以这种方式可以更井然有序地进行配置工作。
还有一些用于许可的文件以及从starter仓库复制的README.md文件,可以用于在将配置维护在Git仓库中时说明配置。
主要键盘键¶
这是返回基本命令映射的调用:
vim.schedule(function()
require "mappings"
end)
这设置了四个主要键,可以通过这些键与其他键组合来启动命令。主要键是:
- C = Ctrl
- leader = 空格
- A = Alt
- S = Shift
注意
我们将在这些文档中多次提到这些键映射。
默认映射包含在 NvChad 插件的lua/mapping.lua中,但可以使用自身的mappings.lua扩展其他自定义命令。
<leader>th
用于更改主题 空格 + t + h<C-n>
用于打开 nvimtree Ctrl + n<A-i>
用于在浮动选项卡中打开终端 Alt + i
有很多预设的组合,它们涵盖了 NvChad 的所有用途。在开始使用您配置了 NvChad 的 Neovim 实例之前,花点时间分析键映射是值得的。
作者:Franco Colussi
贡献者:Steven Spencer, Ganna Zhyrnova