如何彻底移除ZLS的自动格式化与自动修复(基于Nvim Kickstart)
解决ZLS保存时压缩结构体为单行的问题
关键问题定位
你修改的enable_autofix配置和代码格式化无关,该选项用于自动修复代码错误(比如未使用变量、语法修正),不控制结构体的格式化样式。真正控制结构体是否被压缩的是ZLS的格式化相关配置项。
ZLS层面的解决方案
1. 找到ZLS生效的配置文件路径
打开终端执行以下命令,查看当前ZLS读取的配置文件位置:
zls --show-config-path
Windows下通常路径为%APPDATA%\zls\config.json,如果该文件不存在,手动创建即可。
2. 修改配置文件中的格式化选项
在config.json中添加或修改formatting字段,根据需求选择配置:
- 如果你想彻底关闭ZLS自动格式化:
{ "format_on_save": false }
- 如果你想保留格式化但禁止结构体被压缩为单行:
{ "formatting": { "compact_structs": false, "struct_braces_on_new_line": true } }
其中compact_structs设为false是禁用结构体压缩的核心配置,struct_braces_on_new_line设为true可确保结构体左大括号单独占一行,保持排版一致。
3. 重启生效
修改配置后,关闭并重新打开编辑器,或重启ZLS服务,确保配置生效。
补充:修正你的Nvim配置错误
你之前的Nvim配置中,ZLS的settings使用Lua节点是错误的,正确的配置节点应为zls(若已通过ZLS全局配置解决问题,可忽略此部分):
zls = { cmd = { 'C:/zig/lsp/1.12.0/zig-out/bin/zls.exe' }, settings = { zls = { format_on_save = false, formatting = { compact_structs = false, }, }, }, },
内容的提问来源于stack exchange,提问作者varikoz272
相关产品推荐
相关产品推荐

