gossip icon indicating copy to clipboard operation
gossip copied to clipboard

使用null-ls来统一neovim的格式化方案

Open qianxi0410 opened this issue 1 year ago • 0 comments

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

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

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

qianxi0410 avatar Feb 01 '23 08:02 qianxi0410