%% # 纲要 > 主干纲要、Hint/线索/路标 # Q&A #### 已明确 ![[05-工具/vim/lazy.nvim 插件管理器#^4q61sv]] ![[05-工具/vim/lazy.nvim 插件管理器#^md82ai]] #### 待明确 > 当下仍存有的疑惑 **❓<font color="#c0504d"> 有什么问题?</font>** # Buffer ## 闪念 > sudden idea ## 候选资料 > Read it later %% # Lazy.nvim 插件管理器 插件管理器的作用: - **根据配置的插件名自动安装插件** - **自动更新插件** - **实现延迟加载**——仅在真正需要使用插件的时候才进行加载 ##### GUI 界面 lazy.nvim 提供了一个 GUI 界面,可通过 `:Lazy` 命令进入 ![[_attachment/05-工具/vim/lazy.nvim 插件管理器.assets/IMG-lazy.nvim 插件管理器-5AF67CBDD0215D626409E4703E318FDA.png|630]] ##### 插件自动安装 只需要**在 lazy.nvim 的配置文件中**编写好**对插件模块的引入语句**,启动 Neovim 时就会**自动安装&更新插件**。 > [!example] lazy.nvim 自动安装插件时显示界面如下: > > ![[_attachment/05-工具/vim/lazy.nvim 插件管理器.assets/IMG-lazy.nvim 插件管理器-83DD5400594F593F2E0F2F44BC3FB5A4.png|615]] > > <br><br><br> # Lazy.nvim 插件管理组织方式 参见官网安装说明[^1],**Neovim 配置文件目录**采用如下的**组织方式**: ![[_attachment/05-工具/vim/Neovim 说明.assets/IMG-Neovim 说明-495A2C8072F435273A590E67F1DDF666.png|325]] 基于 Lua 的**模块化配置方式**,将 **Neovim 的配置**、**lazy.nvim 的配置**、**各个独立插件的配置** 拆分成了 **==独立的配置文件==**: - `init.lua`:**NeoVim 的配置文件**,在该文件中**引入 `lazy.nvim` 的配置文件**:`require("config.lazy")` - `/lua/config/lazy.lua`: **lazy.nvim 的配置文件**,其中通过 lazy.nvim 的 `setup` 函数来**安装和配置插件**。 - `/lua/plugins/*.lua`:**各个插件的配置文件** <br><br><br> # Lazy.nvim 安装 参见官网安装说明[^1],按上文的方式进行组织,只需**手动创建并如下编写两个 ==Neovim 配置文件==**,然后**重启 Neovim** 即可: - `~/.config/nvim/init.lua` - `~/.config/nvim/lua/config/lazy.lua`(**lazy.nvim 的配置文件**) ![[_attachment/05-工具/vim/lazy.nvim 插件管理器.assets/IMG-lazy.nvim 插件管理器-6D86E88D3F193D6E81D1685789E0E765.png|585]] 配置文件说明: - (1)**==检查 lazy.nvim 是否存在==,若不存在则进行安装**——`Bootstrap lazy.nvim` 部分 - (1)若不存在,则 **git clone 其仓库到 Neovim 的 Data 路径下的 `/lazy/lazy.nvim`目录中**。 - (2)将 **lazy.nvim 路径**添加到 **==Neovim 的运行时路径==**:`vim.opt.rtp:prepend(lazypath)` => 由此,`require("lazy")` 才能搜索到 lazy 模块。 - (2)**配置全局 & 本地 Leader 键** - (3)**设置 lazy.nvim**——`Setup lazy.nvim` 部分 - `require("lazy")` 将**加载 `lazypath` 路径下的 `/lua/lazy/init.lua` 模块**[^6]: - 指定**插入配置的导入路径** - 指定**安装插件时使用的配色方案** - 启用**自动检查插件更新** 编写完成上述配置文件后,进入 Neovim,执行 `:checkhealth lazy` 显示如下,表明**安装成功**: ![[_attachment/05-工具/vim/lazy.nvim 插件管理器.assets/IMG-lazy.nvim 插件管理器-46277C2C0E3EBFDDDBF4608D94D1CE24.png|669]] <br><br><br> # Lazy.nvim 使用方式 > ❓<font color="#c0504d">如何使用 Lazy.nvim?</font> ^4q61sv 在上文提到的模块化组织方式下,**`lazy.nvim` 配置文件**即 `~/.config/nvim/lua/config/lazy.lua`。 其中 **==`require('lazy).setup(...)`==** 语句即用于 **==引入& 设置== lazy.nvim 插件管理器**、**==指明== Neovim 所需使用的所有插件**,**Lazy.nvim 将根据指定的插件名自动进行安装**。 ## 声明所需使用的插件 > ❓<font color="#c0504d">如何声明&配置所需使用的插件?</font> ^md82ai lazy.nvim 会对**声明了配置项的插件==自动安装&追踪更新==**。 ### 模块化组织方式(推荐) ![[_attachment/05-工具/vim/lazy.nvim 插件管理器.assets/IMG-lazy.nvim 插件管理器-D1360E8CB4AA77C5154865736DB94DC0.png|212]] 在模块化的组织方式下,**每个插件对应一份 "独立配置文件"** 由 **lazy.nvim 配置文件引入汇总**,写成以下形式: ```lua title:~/.config/nvim/lua/config/lazy.lua -- Setup lazy.nvim require("lazy").setup({ spec = { -- import all the plugin specs: `/lua/plugins/*.lua` { import = "plugins" }, }, -- Configure any other settings here. See the documentation for more details. -- colorscheme that will be used when installing plugins. install = { colorscheme = { "habamax" } }, -- automatically check for plugin updates checker = { enabled = true }, }) ``` ==**`spec = {{ import = "plugins"}}`**== 指示 lazy.nvim **加载所有 `~config/nvim/lua/plugins/*.lua` 文件**——即**各个插件的独立==插件配置文件==**,例如 `flash.lua`: ![[_attachment/05-工具/vim/lazy.nvim 插件管理器.assets/IMG-lazy.nvim 插件管理器-47DA1CFD44178928B1416493E39918D8.png|839]] > [!important] 模块化组织方式下,**每个插件对应一份 "独立的 `.lua` 配置文件"**,以 "==**lua 模块**==" 的形式**返回一个 ==Table==,注明==插件名称、插件配置==**。 lazy.nvim 会**汇总这些插件配置文件**,自动进行**安装和处理**。 ### 非模块化组织方式 `spec` 部分**直接声明所需使用的插件**,**==每个插件对应一个 "Table"==**——首项指明 **==插件名称==**,其余项为 **==插件配置==**。 ```lua title:~/.config/nvim/lua/config/lazy.lua -- Setup lazy.nvim require("lazy").setup({ spec = { -- add your plugins here -- 声明使用 flash.nvim 插件 { "folke/flash.nvim" }, -- 声明使用 nvim-treesiter 插件 { "nvim-treesitter/nvim-treesitter", run = ':TSUpdate' } -- 声明使用 Telescope 插件 { 'nvim-telescope/telescope.nvim', requires = { {'nvim-lua/plenary.nvim'} } }, } -- Configure any other settings here. See the documentation for more details. -- colorscheme that will be used when installing plugins. install = { colorscheme = { "habamax" } }, -- automatically check for plugin updates checker = { enabled = true }, }) ``` <br><br> ## 插件配置文件声明方式 在模块化方式下,每个插件的**独立插件配置文件**中应当 **`return` 一个 Table,注明==插件名称、插件配置==**。 具体内容**参见各个插件的官方说明**。 > [!caution] 参见 lazy.nvim 文档[^1],每个插件配置文件的 Table 声明中,应当**使用 `opts = {}` 替代 `config = function() ... ebd`**。 > > ![[_attachment/05-工具/vim/lazy.nvim 插件管理器.assets/IMG-lazy.nvim 插件管理器-08125CEF7B5FEB604BB6090602241FF7.png|512]] > ### 插件配置文件示例 ![[05-工具/vim/Neovim 插件#^qu8flb]] ![[05-工具/vim/Neovim 插件#^y04wu9]] ![[05-工具/vim/Neovim 插件#^wz0l58]] ![[05-工具/vim/Neovim 插件#^2o26dg]] <br><br><br> # 参考资料 ##### 官方文档 - [lazy.nvim](https://lazy.folke.io/) ##### 其他 [lazy-nvim插件管理器基础入门 - w4ngzhen - 博客园](https://www.cnblogs.com/w4ngzhen/p/17493128.html) # Footnotes [^1]: [lazy.nvim](https://lazy.folke.io/spec)