配置 NeoVim 的代码折叠

配置 NeoVim 的代码折叠,最现代化且推荐的方式是使用 Tree-sitter 驱动的 表达式折叠 (foldmethod='expr')。这能提供最准确的语言感知型折叠(例如,根据函数体、类或代码块自动折叠)。

两步配置:

  1. 添加 nvim-treesitter 插件:它是实现准确折叠的基础。
  2. 设置折叠选项 :在 options.lua 中开启并指定折叠方法。

步骤一:在 lua/plugins/init.lua 中添加 Tree-sitter

要将 nvim-treesitter 插件添加到你的 lazy.nvim 列表中,并配置它启用折叠功能。

请在 lua/plugins/init.lua 文件的插件列表(require("lazy").setup({ ... }) 内部)中,添加以下代码块:

lua 复制代码
-- ... (其他插件,例如 plenary.nvim 和 catppuccin 插件之间)

-- Tree-sitter:提供先进的语法解析,是实现精确折叠的基础
{
    "git@github.com:nvim-treesitter/nvim-treesitter.git",
    build = ":TSUpdate", -- 首次安装后运行此命令来下载解析器
    name = "treesitter",
    event = "BufReadPost",
    config = function()
        require("nvim-treesitter.configs").setup({
            -- 确保安装常用语言的解析器
            ensure_installed = { 
                "c", "lua", "vim", "vimdoc", "javascript", "typescript", 
                "html", "css", "json", "bash", "python" 
            }, 
            
            highlight = { enable = true }, -- 启用高亮(推荐)
            indent = { enable = true },    -- 启用智能缩进(推荐)
            folding = { enable = true },   -- **启用折叠**
        })
    end,
},

-- ...

步骤二:在 lua/core/options.lua 中配置折叠选项

在你的 lua/core/options.lua 文件中,添加以下配置来启用并指定使用 Tree-sitter 提供的折叠表达式。

在文件末尾或专门的配置区域添加以下几行:

lua 复制代码
-- lua/core/options.lua

-- ... (其他配置,如 opt.timeoutlen = 300)

-- == 折叠配置 (Folding) ==
opt.foldenable = true                  -- 启用折叠功能
opt.foldmethod = "expr"                -- 使用表达式进行折叠
opt.foldexpr = "nvim_treesitter#foldexpr()" -- 指定折叠表达式为 Tree-sitter 函数
opt.foldlevel = 99                     -- 默认打开所有折叠(推荐:文件打开时全部展开)
opt.foldcolumn = "1"                   -- 在左侧显示一列来表示折叠(可选,设为"0"则不显示)

✅ 完成与使用

完成上述配置后,重新启动 NeoVim。你就可以使用标准的 Vim 折叠命令来操作代码块了:

  • <math xmlns="http://www.w3.org/1998/Math/MathML"> z a \mathbf{za} </math>za:切换(打开/关闭)光标下的折叠。
  • <math xmlns="http://www.w3.org/1998/Math/MathML"> z M \mathbf{zM} </math>zM:关闭文件中所有折叠。
  • <math xmlns="http://www.w3.org/1998/Math/MathML"> z R \mathbf{zR} </math>zR:打开文件中所有折叠。
  • <math xmlns="http://www.w3.org/1998/Math/MathML"> z i \mathbf{zi} </math>zi:切换折叠功能 ('foldenable') 的启用/禁用状态。
相关推荐
源码获取_wx:Fegn089524 分钟前
基于springboot + vue小区人脸识别门禁系统
java·开发语言·vue.js·spring boot·后端·spring
wuxuanok1 小时前
Go——Swagger API文档访问500
开发语言·后端·golang
用户21411832636021 小时前
白嫖Google Antigravity!Claude Opus 4.5免费用,告别token焦虑
后端
爬山算法2 小时前
Hibernate(15)Hibernate中如何定义一个实体的主键?
java·后端·hibernate
用户26851612107563 小时前
常见的 Git 分支命名策略和实践
后端
程序员小假3 小时前
我们来说一下 MySQL 的慢查询日志
java·后端
南囝coding3 小时前
《独立开发者精选工具》第 025 期
前端·后端
To Be Clean Coder3 小时前
【Spring源码】从源码倒看Spring用法(二)
java·后端·spring
想用offer打牌4 小时前
你真的懂Thread.currentThread().interrupt()吗?
java·后端·架构