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 中内置的很多功能, 做成了独立的 Neovim 插件(我的插件列表),这样如果喜欢 spacevim 中某个功能的用户,还可以继续单独使用。