gossip
gossip copied to clipboard
使用null-ls来统一neovim的格式化方案
巨硬家编辑器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
的链式格式化方案,不用手敲命令行,体验还是非常地不错。