跳至内容

将 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

NvChad Install

初始配置非常少,并为您的自定义提供了一个起点。如编辑器首次启动时屏幕截图所示,仅加载了四个模块 (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)

然后将主题应用于defaultstatusline设置

-- load theme
dofile(vim.g.base46_cache .. "defaults")
dofile(vim.g.base46_cache .. "statusline")

完成后,配置操作和键盘映射所需的autocmdsNeovim 自动命令)也会输入

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" })

配置中包含的两个文件夹configsplugins都用于管理插件;个人插件应放在plugins文件夹中,而其额外的配置(如果有)应放在configs文件夹中。
最初,将提供一个plugins/init.lua文件,用于安装conform.lua插件(在configs/conform.lua中配置)和nvimtree.nvim插件(其中包含与Git相关的装饰选项)。

插件的组织

插件的包含是通过插入plugins文件夹中存在的任何经过正确配置的文件来完成的,这允许对插件进行组织,例如按用途进行组织,通过在该文件夹中创建单独的文件(utils.luaeditor.luamarkdown.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