使用null-ls来统一neovim的格式化方案
2月1日2月1日

巨硬家编辑器`vscode`在打开大型项目时,无论启动速度还是补全速度都非常地拉胯,因此还是决定将主力编辑器切换为`neovim`,配置好后,搭配上`tmux`,在终端下的体验非常的丝滑。

这里我并没有从 0 开始进行配置,GitHub 上有很多不错的现成解决方案,这里我直接使用了nvimdots方案。该方案使用efm通用语言服务器作为格式化的解决方案,但是我觉得`efm`的配置还是太过零散,像`go``rust`都在自己官方内置的 LS 中自带了格式化工具,而`json``sh`等不自带的就需要交给`efm`来进行格式化,这样其实显得割裂,而操作起来还是比较繁琐,配置和修改都比较麻烦。

相比于`efm`, 这里我比较推荐的是null-ls,作为一个和`efm`功能相似的替代品,它支持更加统一的配置方案,无论是`go``rust`,还是`json``sh`等。它支持大部分主流语言的格式化方案,基本只需要进行很少的配置。所以,现在我的`neovim`格式化方案都统一交给`null-ls`来解决,不再考虑各种语言官方的 LS 是否自带格式化工具。此外,另一个比较吸引我的是,它可以轻松的配置多个格式化工具对文件进行链式格式化。对于`go`这种需要多个格式化工具的语言来说,在使用`null-ls`的方案下,可以轻松实现`gofumpt -> goimports -> golines`的链式格式化方案,不用手敲命令行,体验还是非常地不错。


cd ..