- 项目的初衷
- 遇到的问题
- 停止维护的原因
- 归档即是新的开始
- 插件列表
- 插件管理器 nvim-plug
- 项目管理 rooter.nvim
- 异步代码检索 flygrep.nvim
- 历史文件管理 mru.nvim
- 代码格式化 format.nvim
- 版本控制 git.nvim
- 代码运行 code-runner.nvim
- 书签管理 bookmarks.nvim
- tags 管理 ctags.nvim
- 滚动侧栏 scrollbar.nvim
- 笔记插件 zettelkasten.nvim
- 日历插件 calendar.nvim
- 异步job管理 job.nvim
- 模糊搜索插件 picker.nvim
- 项目文件跳转 altf.nvim
- 按键弹窗 record-key.nvim
- 录屏 record-screen.nvim
- AI 助手 chat.nvim
- 缓冲区管理 bufdel.nvim
- 标签页 tabline.nvim / tabman.nvim
- 状态栏 statusline.nvim
- 通知系统 notify.nvim
- 快捷键引导 keymap-guide.nvim
- 多光标编辑 iedit.nvim
- 快速跳转 hop.nvim
- 颜色选择器 cpicker.nvim
- Git 链接 gitlink.nvim
- GitHub API github.nvim
- GTags 集成 gtags.nvim
- 任务管理 tasks.nvim
- 待办事项 todo.nvim
- Quickfix 列表 quickfix.nvim
- 浮动终端 terminal.nvim
- REPL 支持 repl.nvim
- 仪表盘 dashboard-nvim
- 状态信息 ctrlg.nvim
- 日志工具 logger.nvim / logevent.nvim
- TOML 解析 toml.nvim
- 工具集 utils.nvim
- 中文检查 chineselinter.nvim
- 智能输入法 smart-ime.nvim
- 音乐播放器 music-player.nvim
- 临时缓冲区 scratch.nvim
SpaceVim 从 2016 年 12 月诞生,到 2025 年 2 月 21 日正式归档,前后将近九年。 九年的时间足以让一个想法从萌芽走向成熟,也足以让一个项目逐渐找到它最合适的落点。 在我看来,归档并不意味着结束,也是新的一段开始。
项目的初衷
早期,开发这个项目的时候,是想做一个开箱即用的模块化 Vim 配置,类似于 spacemacs 那样, 把不同语言功能所需要的配置及插件都放到一个模块里面。使用者不再需要自己配置各种插件, 只需要简单地启用对应语言或者功能的模块就可以快速搭建 Vim 的开发环境。
遇到的问题
随着功能越来越多,代码越来越臃肿,速度也变得越来越慢。如果查看 git log 的话,不难发现,
很大一部分内容是做速度的优化。
甚至,我也使用 Lua 重写的相当一部分的内置插件,包括状态栏、标签栏、任务管理、项目管理、多光标、快捷键导航等等。
但是即便是使用 Lua 进行了重写,但是因为要兼容老版本的 Neovim 以及兼容 Vim,因此整体总的框架使用的是 Vim Script, 调用 Lua 插件的时候还是使用 VimL 去调用 Lua 的代码,例如:
func! SpaceVim#test(...)
lua require('task').start(require('spacevim').eval('a:000'))
endf
这样的话速度还是无法发挥到极致。
停止维护的原因
- 想使用纯 Lua 来写 Neovim 配置(nvim-config),不再兼容 Vim,因为我也很少再使用 Vim 了。
- 不想做 Neovim 老版本的兼容支持
- 单个功能插件独立维护,便于直接使用。我把原先 SpaceVim 中内置的很多功能,拆分成了独立的 Lua 插件,方便他人根据实际需求选择最小化的配置。
归档即是新的开始
归档并不是结束,而是完成一个阶段性作品后的放手。正如上述原因里所描述,我希望使用 Lua 并且不再兼容老版本以及 Vim,使得代码能够更简洁。 相较于再制作一个 Lua 开发的 SpaceVim,我更乐意把 SpaceVim 中日常使用较多的功能独立成单独的插件。这样也方便他人根据实际的需求选择最小化的配置。
插件列表
目前已经切换到纯 Lua 配置的 Neovim 环境了,并且原先 SpaceVim 中常用功能已单独使用 Lua 重写。
个人 Neovim 配置仓库地址:nvim-config。
以下是我自己制作并且日常使用的 Neovim 插件,欢迎尝试。
插件管理器 nvim-plug

仓库地址:wsdjeg/nvim-plug
这是我参考 dein.nvim 以及 Vundle.vim 写的一个异步的插件管理器,已经实现了日常我对于插件管理器的要求:
- clone、pull、build 等操作都是多线程异步执行;
- 支持通过 autocmd、command、function 等方式触发延迟加载;
- 支持依赖管理、import 目录载入插件;
- 支持 luarocks;
对于插件管理器的界面,其实我需要的只是像 Vundle.vim, 以前使用 dein.nvim 时候,dein.nvim 是默认没有 UI 界面的,当时我写了一个 dein-ui.vim 用来展示插件安装的进度。
项目管理 rooter.nvim
仓库地址:rooter.nvim
在使用 Vim 编辑代码文件时,比较常用的一个功能是根据当前文件的路径自动将当前目录切换到项目的根目录。 这个功能以前我使用的是 vim-rooter 这个插件。
而 rooter.nvim 正是使用 Lua 重新实现该功能的 Neovim 插件, 不同的是,该插件额外提供了一些模糊搜索插件拓展,可以模糊搜索历史打开过的项目。
此外,这个插件还支持设置 callback 函数,当切换项目时自动执行。
异步代码检索 flygrep.nvim
仓库地址:flygrep.nvim
日常阅读代码过程中还是经常需要搜索代码的,flygrep。插件会异步调用rg,并实时展示搜索结果。
历史文件管理 mru.nvim
仓库地址:mru.nvim
类似于 v:oldfiles,解决的问题是Windows系统下路径格式问题,同时支持各种筛选选项。此外也提供了一个 telescope 拓展。
代码格式化 format.nvim
仓库地址:format.nvim
很早以前,我使用的代码格式化插件是 neoformat,这是使用 VimScript 开发的插件,为了更快的速度体验,我使用 Lua 重新写了一个格式化插件,插件的基本逻辑参考了 neoformat。也支持 markdown 内代码块的格式化。
版本控制 git.nvim
仓库地址:git.nvim
可以这么说,这应该是我日常使用最多的插件,比如 :Git add,:Git commit,等等。
代码运行 code-runner.nvim
仓库地址:code-runner.nvim
vscode 里面有一个非常著名的插件,叫做CodeRunner,就是快速运行当前文件,并在下面分屏显示运行结果。code-runner.nvim 实现了想类似的功能,不仅仅可以运行当前文件,还可以快速运行 markdown 文件内当前代码块。
书签管理 bookmarks.nvim
仓库地址:bookmarks.nvim
可以标记当前行进入书签列表,支持添加备注内容,支持使用quickfix列表展示书签,也提供了一个 telescope 拓展以便于模糊搜索书签。
tags 管理 ctags.nvim
仓库地址:ctags.nvim
自动为当前项目生成ctags数据库,同时更新 &tags 选项,以便于使用ctrl-]跳转到光标tags定义位置。
滚动侧栏 scrollbar.nvim
仓库地址:scrollbar.nvim
自动在当前窗口右侧绘制一个滚动条,提示当前文档滚动页大致的位置。
笔记插件 zettelkasten.nvim
仓库地址:zettelkasten.nvim
这是一个做笔记的插件,支持标签内链,相互索引。
日历插件 calendar.nvim

仓库地址: calendar.nvim
记笔或者待办事项的时候,很多时候需要一个日历视图,来快速看下哪一天有记录。而 calendar.nvim 就是这样一个支持拓展的简易日历视图,可以方便的查阅日历,配合拓展还可以在特定日期执行某个拓展操作。
我目前最常用的是配合 zettelkasten.nvim 插件来记录和查阅每日笔记。
异步job管理 job.nvim
仓库地址:job.nvim
这是模拟 jobstart 的工具,基于libuv,可以用于异步执行命令。我的很多插件都是依赖这个job.nvim,比如插件管理器等等,需要异步执行外部命令的。
模糊搜索插件 picker.nvim
仓库地址:picker.nvim
早期在使用 Vim 时,使用过 ctrl-p、unite.vim、denite.nvim 等等插件。从 Neovim 浮窗功能出来后,逐步切换到了 telescope.nvim。 但是近期发现这个插件似乎不怎么在维护了,再加上自己也有想法写一个模糊搜索插件,于是就有了 picker.nvim。
项目文件跳转 altf.nvim
仓库地址:altf.nvim
这个插件提供了一个命令 :A,可以使用这个命令在头文件和C文件、或者源文件和测试文件等之间快速跳转。
按键弹窗 record-key.nvim
仓库地址:record-key.nvim
有时候制作录屏的时候,需要展示自己按键的顺序,这个插件以弹窗的形式,在右下方展示按键的顺序。
录屏 record-screen.nvim
仓库地址:record-screen.nvim
屏幕录制的软件其实挺多的,这个插件通过后台调用 ffmpeg,支持录制声音、话筒、摄像头等等。
AI 助手 chat.nvim
仓库地址:chat.nvim
这是我目前投入精力最多的项目–一个 Neovim 内的 AI 对话插件,支持多模型接入、工具调用、流式输出、定时任务等。同时也开发了 Android 客户端 Nova,实现手机和电脑无缝切换。
缓冲区管理 bufdel.nvim
仓库地址:bufdel.nvim
删除缓冲区时不改变当前窗口布局,避免关闭文件后窗口排列被打乱。
标签页 tabline.nvim / tabman.nvim
仓库地址:tabline.nvim / tabman.nvim
tabline.nvim 提供简洁的标签栏显示,tabman.nvim 则是轻量级的标签页和窗口管理工具。
状态栏 statusline.nvim
仓库地址:statusline.nvim
模块化的状态栏插件,可以按需加载不同模块,显示当前文件信息、Git 状态等。
通知系统 notify.nvim
仓库地址:notify.nvim
浮动窗口通知,用于展示异步操作的结果或提示信息。
快捷键引导 keymap-guide.nvim
仓库地址:keymap-guide.nvim
按下快捷键前缀时自动弹出浮窗,展示该前缀下可用的所有按键绑定。
多光标编辑 iedit.nvim
仓库地址:iedit.nvim
类似 vim-visual-multi 的多光标编辑模式,可以同时编辑多个匹配位置。
快速跳转 hop.nvim
仓库地址:hop.nvim
基于 hop.nvim 的 fork,输入少量字符即可快速跳转到光标可见范围内的任意位置。
颜色选择器 cpicker.nvim
仓库地址:cpicker.nvim
轻量级颜色选择面板,支持 RGB、HSL 等多种格式,方便在编辑 CSS 或配置文件时选取颜色。
Git 链接 gitlink.nvim
仓库地址:gitlink.nvim
快速打开或复制当前文件在 Git 远程仓库(GitHub、GitLab 等)的在线链接。
GitHub API github.nvim
仓库地址:github.nvim
GitHub REST API 的 Neovim 封装,支持查看 Actions、Issues、PR 等。
GTags 集成 gtags.nvim
仓库地址:gtags.nvim
将 GNU Global 的 gtags 集成到 Neovim 中,提供符号定义查找和引用查询。
任务管理 tasks.nvim
仓库地址:tasks.nvim
灵感来自 VS Code 的任务管理器,支持自定义任务并快速执行。
待办事项 todo.nvim
仓库地址:todo.nvim
项目级别的 TODO 管理插件,可以在代码中标记待办事项并集中查看。
Quickfix 列表 quickfix.nvim
仓库地址:quickfix.nvim
增强 Neovim quickfix 列表的展示和交互体验。
浮动终端 terminal.nvim
仓库地址:terminal.nvim
简单的浮动终端插件,快速打开和关闭终端窗口。
REPL 支持 repl.nvim
仓库地址:repl.nvim
为 Neovim 提供 REPL(交互式编程环境)支持。
仪表盘 dashboard-nvim
仓库地址:dashboard-nvim
基于 dashboard-nvim 的 fork,启动 Neovim 时展示个性化仪表盘。
状态信息 ctrlg.nvim
仓库地址:ctrlg.nvim
增强 Neovim 默认的 Ctrl-G 状态信息,展示更丰富的文件和项目信息。
日志工具 logger.nvim / logevent.nvim
仓库地址:logger.nvim / logevent.nvim
logger.nvim 是运行时日志工具,logevent.nvim 用于事件日志记录。两者主要用于插件开发调试。
TOML 解析 toml.nvim
仓库地址:toml.nvim
纯 Lua 实现的 TOML 文件解析器。
工具集 utils.nvim
仓库地址:utils.nvim
一组通用工具函数集合,被我的其他插件所依赖。
中文检查 chineselinter.nvim
仓库地址:chineselinter.nvim
中文文档语言规范检查工具,可以检测中英文混排间距、标点符号等常见问题。
智能输入法 smart-ime.nvim
仓库地址:smart-ime.nvim
根据当前模式自动切换输入法状态,进入普通模式时自动切回英文。
音乐播放器 music-player.nvim
仓库地址:music-player.nvim
在 Neovim 里听音乐,支持播放列表管理和快捷键控制。
临时缓冲区 scratch.nvim
仓库地址:scratch.nvim
快速创建临时缓冲区,用于记录笔记或测试代码片段。