Neovim 中文周刊 第 13 期:2025年5月26日至6月1日

欢迎收看第 13 期 Neovim 中文周刊!

本期周刊包含以下版块:

  • Neovim 开发近况:摘录近期合并的 PR,以新功能为主
  • 社区资讯:摘录近期更新的 Issue 讨论
  • 插件推荐

Neovim 开发近况

本周 Neovim 并无新的变化,主要集中在 bug 修复上!

文档系统重组

本周最显著的变化之一是对文档系统的重要重组。 PR #34212这项改进由 brianhuster 完成:

  • builtin.txt 重命名为 vimfn.txt:更清晰地表明该文件包含 Vim 脚本函数
  • eval.txt 重命名为 vimeval.txt:更好地区分 Vim 兼容的求值功能

这一变更解决了长期以来的混淆问题,因为 builtin.txt 实际上只包含 Vimscript 函数,而非 Lua 函数,这对使用 Lua 配置 Neovim 的用户造成了困扰。文件重命名保留了原始标签,确保向后兼容性,同时提高了文档的清晰度和一致性。

外部 UI 接口改进

外部 UI 接口和消息系统得到了多项改进:

  • PR #34190 改进了消息路由机制,使消息能够正确路由到"more"窗口(如果该窗口已打开)
  • Issue #34214 修复了当消息窗口打开时,命令窗口(CTRL-F)被隐藏的问题
  • Issue #34213 解决了两个内联打印语句触发'more'窗口时,只有第二条消息显示在窗口中的问题
  • Issue #34184 修复了 winnr('$') 在启用外部命令行 UI 时返回错误值的问题

这些改进共同提升了外部 UI 的用户体验和一致性,对使用自定义 UI 的用户尤为重要。

LSP 功能增强

LSP(语言服务器协议)相关功能获得了多项重要改进:

  1. 新增 workspace/diagnostic 方法支持 (#34262)(尚未合并):由 MariaSolOs 实现,允许开发者查看整个工作区的诊断信息,而不仅限于已打开的文件
  2. 改进 vim.lsp.log.set_format_func() 以控制日期和文件路径格式 (#34118):增强了 LSP 日志的可读性和自定义性

这些改进使 Neovim 的 LSP 客户端更加强大和灵活,特别是对于大型项目和 AI 辅助开发场景。

终端功能稳定性增强

PR #34012 修复了终端模式下处理过多 CSI 参数时可能导致的栈溢出问题。这一修复提高了终端模式的稳定性和可靠性,特别是在处理复杂终端输出时。

Tree-sitter 升级

Tree-sitter 是 Neovim 用于代码解析和语法高亮的核心组件,本周有两项重要更新:

  • PR #34211 将 Tree-sitter 版本升级到 v0.25.5,带来性能改进和 bug 修复
  • PR #34226 修复了 Tree-sitter 解析器元数据注释的问题

这些更新直接提升了 Neovim 的语法高亮和代码分析功能的质量。

Vim 补丁移植

Neovim 继续保持与 Vim 的功能兼容性,本周移植了多个 Vim 补丁:

  • PR #34219 移植了 Vim 9.1.1417 补丁,修复了 complete_info() 函数中关于寄存器补全信息缺失的问题
  • PR #34251 移植了 Vim 9.1.1419 补丁,改进了事件处理机制
  • PR #34239 移植了 Vim 9.1.1342 补丁,改进了 Shebang 文件类型检测

API 功能增强

Neovim 的 API 得到了多项增强和修复:

  • PR #34210 修复了用户命令 Lua 回调中缺少 nargs 字段的问题
  • PR #33715 改进了 vim.system() 函数在工作目录不存在时的错误消息
  • Issue #34208 讨论了 vim.fs.root() 函数回退到 Nvim 当前目录的行为,但很可惜最终被标记了 no plan

显示和渲染改进

  • PR #34241 修复了 Visual 选择模式下 curswant 更新的问题
  • Issue #34235 修复了使用计数动作时块可视模式高亮显示错误的问题

构建系统改进

PR #34237 将 Windows CI 运行环境升级到 windows-2022,提升了构建系统的现代性和稳定性。

社区资讯

本周 Neovim 社区依然活跃,多个重要功能提案和讨论引发广泛关注。以下是本周的社区亮点:

内置插件管理器提案

本周最引人注目的开发是 saccarosium 提交的内置插件管理器提案 (#34223)。这个名为 vim.pack 的模块提供了一个简洁的 API 来下载和管理插件:

  • 仅 419 行代码的最小化实现
  • 提供简单的 API 通过远程仓库下载插件
  • 使用默认的 :h packages 功能加载插件
  • 每个包都下载到 opt 目录并默认打包
  • 支持通过在包规格中添加 opt 键或全局配置禁用插件

该 PR 比 PR #34009功能要少的多,在对应的评论区讨论比较激烈(不过一部分是因为该PR作者的言语不太友好)!

GSoC 项目进展

Google Summer of Code (GSoC) 2025 的 Neovim 项目正在积极推进:

  • AI 导向的 LSP 功能:由 ofseed 提出,旨在实现 AI 导向的 LSP 功能和 LSP 数据缓存模块。该项目将增强 Neovim 与 AI 工具的集成能力,并通过缓存机制提升 LSP 性能。

插件推荐

codecompanion-history.nvim

AI 集成插件 CodeCompanion 的历史记录管理插件,使用体验非常棒,同时该插件作者也是 mcphub.nvim 的作者!

总结

本周 Neovim 的开发和社区活动主要集中在文档系统重组、外部 UI 接口改进、内置插件管理器提案、网络访问功能实现以及 GSoC 项目进展上。这些改进和讨论共同推动了 Neovim 的发展,提升了其稳定性、功能性和用户体验。

关于

本周的内容实际上是由 AI 生成后进行了一期人工校对,如有问题请在 Github 上提交 Issue 或 PR。

那么,一如既往,希望本期周刊能对您有所裨益,感谢您的阅读。