跳至内容

将 Neovim 变成一个高级 IDE

先决条件

如 NvChad 网站所述,您需要确保系统满足以下要求

  • Neovim 0.10.0.
  • Nerd Font 在您的终端模拟器中设置它。
    • 确保您设置的 Nerd Font 不以 Mono 结尾
    • 例如: Iosevka Nerd Font 而不是 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)复制文件来实现的。此方法允许将 NvChad 配置作为 Neovim 插件安装在lazy.nvim插件管理器中。
这样,配置就可以像所有其他插件一样更新,从而简化了用户的管理。此外,这种方法使得整个用户配置独立,允许其在多台机器之间进行完全管理和分发。

要下载和初始化配置,请使用以下命令

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

引导

引导过程在starter存储库的 init.lua 文件中实现,并包含以下步骤

设置默认主题路径和<leader>键,在这种情况下是 Space

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 存储库的引导所使用的文件相同,稍后将用于加载配置中的其他文件,例如其自身的autocommands.lua 文件。

接下来是 lazy-lock.json 文件,其中存储了安装中的所有插件以及它们相对于GitHub上开发的的状态。该文件允许在安装在多台机器上的安装之间同步编辑器状态,并允许自定义安装复制所需状态。

其余配置位于lua文件夹中,并从 chadrc.lua 文件开始初始化,该文件在初始版本中仅包含编辑器主题设置。
该文件用于自定义编辑器 (UI) 的外观,并与 NvChad 插件的 nvconfig.lua 文件共享语法;要编译它,只需将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文件,其中在configs/conform.lua中配置了conform.lua插件,并在其中配置了nvimtree.nvim以及用于Git相关装饰的选项。

插件组织

插件的包含是通过插入plugins文件夹中存在的任何已正确配置的文件来完成的,这允许按目的等方式组织插件,通过在此创建单独的文件(utils.luaeditor.luamarkdown.lua等),可以以更 orderly 的方式处理配置。

还有用于许可的文件以及一个从 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 更改主题 Space + t + h
<C-n> 打开 nvimtree Ctrl + n
<A-i> 在浮动标签页中打开终端 Alt + i

我们为您预设了许多组合,它们涵盖了 NvChad 的所有用法。在开始使用您已配置 NvChad 的 Neovim 实例之前,值得花时间分析一下键映射。

作者:Franco Colussi

贡献者:Steven Spencer, Ganna Zhyrnova