lazy.nvim快速起步

GitHub: folke/lazy.nvim 是neovim的流程插件管理器,可以快速将neovim转变成全功能的IDE,方便我们进行开发。

安装

按照 Neovim基础配置~/.config/nvim/init.lua 配置添加一段 bootstrap:

init.lua 中添加 lazy.nvim 插件管理器bootstrap
-- lazy.nvim
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
  vim.fn.system({
    "git",
    "clone",
    "--filter=blob:none",
    "https://github.com/folke/lazy.nvim.git",
    "--branch=stable", -- latest stable release
    lazypath,
  })
end
vim.opt.rtp:prepend(lazypath)

require("lazy").setup()

备注

最后一行 require("lazy").setup() 当前是空的内容,后续在这部分 setup() 添加需要安装的插件以及操作指令

然后重新进入 nvim ,并运行检查:

检查 lazy 是否安装正确
:checkhealth lazy
检查输出信息
───────────────────────────────────────────────────
lazy: require("lazy.health").check()
 
lazy.nvim
- OK Git installed
- OK no existing packages found by other package managers
- OK packer_compiled.lua not found

Homebrew 安装异常排查

Homebrew 中安装的 nvi 使用上述安装方法,在 checkhealth lazy 输出信息中有报错:

Homebrew 安装 nvimlazy.nvim 后检查 checkhealth lazy 报错
──────────────────────────────────────────────────────────────────────────────                                                                                  
lazy: require("lazy.health").check()                                                                                                                            
                                                                                                                                                                
lazy.nvim                                                                                                                                                       
- {lazy.nvim} version 11.13.1                                                                                                                                   
- OK {git} version 2.39.3 (Apple Git-146)                                                                                                                       
- OK no existing packages found by other package managers                                                                                                       
- OK packer_compiled.lua not found                                                                                                                              
                                                                                                                                                                
luarocks                                                                                                                                                        
- checking hererocks installation                                                                                                                               
- OK no plugins require luarocks, so you can ignore any warnings below                                                                                          
- OK {python3} Python 3.12.4                                                                                                                                    
- ERROR {/Users/huatai/.local/share/nvim/lazy-rocks/hererocks/bin/luarocks} not installed                                                                       
- WARNING {/Users/huatai/.local/share/nvim/lazy-rocks/hererocks/bin/lua} version 5.1 not installed                                                              
- WARNING Lazy won't be able to install plugins that require luarocks.                                                                                          
  Here's what you can do:                                                                                                                                       
   - fix your luarocks installation                                                                                                                             
   - disable hererocks with opts.rocks.hererocks = false                                                                                                        
   - disable luarocks support completely with opts.rocks.enabled = false

方法一: 通过安装 Gighub: vhyrro/luarocks.nvim 解决

上述报错参考 Gighub: vhyrro/luarocks.nvim ,使用 luarocks.nvim 来方便安装 luarocks 包:

  • 先安装 luajit :

使用 Homebrew 安装 luajit
brew install luajet
  • 修改 ~/.config/nvim/init.lua 代码如下:

init.lua 中添加 luarocks.nvim 配置来安装 luarocks 软件包,避免 lazy.nvim 因缺少 luarocks 报错
-- lazy.nvim
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
  vim.fn.system({
    "git",
    "clone",
    "--filter=blob:none",
    "https://github.com/folke/lazy.nvim.git",
    "--branch=stable", -- latest stable release
    lazypath,
  })
end
vim.opt.rtp:prepend(lazypath)

require("lazy").setup({
-- 首先安装luarocks
  "vhyrro/luarocks.nvim",
  priority = 1000, -- Very high priority is required, luarocks.nvim should run as the first plugin in your config.
  config = true,
})

此时当调用 lazy.nvim 就会自动变易一个本地 luarocks 安装。 如果没有自动完成,则可以手工执行 :Lazy build luarocks.nvim (注意,这里必须是 Lazy ,第一个字母大写,否则会报错没有这个指令)

方法二: 直接安装 LuaRocks

备注

LuaRocks 是Lua模块的包管理器

我后来发现一个非常简单的解决方法,就是在系统中直接安装 LuaRocks 就完全解决了( 之前在 Gentoo Linux 上实践 neovim 使用的 USE Flags是 lua_single_target_luajit Build for LuaJIT only,似乎没有启用 LuaRocks ):

  • 安装 LuaRocks 是会自动依赖安装Lua 5.4:

macOS 上使用 Homebrew 安装 luarocks
brew install luarocks

备注

luarocks Installing 提供了不同平台安装 LuaRocks 的方法,其中 macOS 平台推荐使用 Homebrew 方式安装

上述 luarocks 安装完成后,再次执行 :checkhealth lazy 就会看到 luarocks 报错消失:

系统安装了 luarocks 之后报错消失
──────────────────────────────────────────────────────────────────────────────                                                                                  
lazy: require("lazy.health").check()                                                                                                                            
                                                                                                                                                                
lazy.nvim                                                                                                                                                       
- {lazy.nvim} version 11.13.1                                                                                                                                   
- OK {git} version 2.39.3 (Apple Git-146)                                                                                                                       
- OK no existing packages found by other package managers                                                                                                       
- OK packer_compiled.lua not found                                                                                                                              
                                                                                                                                                                
luarocks                                                                                                                                                        
- checking luarocks installation                                                                                                                                
- OK no plugins require luarocks, so you can ignore any warnings below                                                                                          
- OK {luarocks} /usr/local/bin/luarocks 3.11.1                                                                                                                  
- WARNING lua version 5.1 needed, but found Lua 5.4.7  Copyright (C) 1994-2024 Lua.org, PUC-Rio                                                                 
- WARNING {lua5.1} or {lua} or {lua-5.1} version 5.1 not installed

插件

在完成上述 lzay.nvim 初始化之后,安装一个主题插件,一方面验证 lazy.nvim 工作是否正常(我实际上也是为了增加感性认识),另一方面,本案例中安装的theme插件确实美观好用:

  • 修订上文的初始化 ~/.config/nvim/init.lua ,修订 require("lazy").setup() 内容,添加需要安装的插件 catppuccin.nvim ,并且通过最后一行指令应用这个theme:

init.lua 中添加 catppuccin.nvim 插件theme
-- lazy.nvim
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
  vim.fn.system({
    "git",
    "clone",
    "--filter=blob:none",
    "https://github.com/folke/lazy.nvim.git",
    "--branch=stable", -- latest stable release
    lazypath,
  })
end
vim.opt.rtp:prepend(lazypath)

require("lazy").setup(
    { "catppuccin/nvim", name = "catppuccin", priority = 1000 }
)
vim.cmd.colorscheme "catppuccin"

完成配置修订后重新进入 nvim ,就会看到自动安装过程,并且nvim的编辑风格转换

备注

不知为何,在 macOS Terminal 中使用 catppuccin theme时候,会出现灰绿色背景,但是在 tmux多会话终端管理 中使用这个theme则非常完美... Why?

参考