DenoLS为何删除所有空行?(NeoVim+AstroNVim代码可读性问题)
解决DenoLS格式化删除所有空行的问题
原因分析
DenoLS默认使用Deno内置的d fmt工具做代码格式化,而非你安装的Prettier——这就是单独装Prettier没效果的核心原因。d fmt的默认配置可能被修改,或是编辑器设置强制启用了删除空行的规则。
解决方案
方案1:调整Deno内置格式化工具(d fmt)的配置
在项目根目录创建或修改deno.jsonc(支持注释的配置文件),添加格式化规则明确保留空行:
{ "fmt": { "options": { "ignoreEmptyLines": false, // 关键配置:禁止删除空行 "singleQuote": true, "indentWidth": 2, "lineWidth": 80 // 其他格式化选项可按需调整 } } }
保存配置后重启编辑器或重新加载DenoLS服务,d fmt就会保留代码中的空行,同时自动将多行空行合并为一行。
方案2:强制编辑器用Prettier作为格式化器
如果你更偏好Prettier的逻辑,可在编辑器设置里指定它为Deno脚本的默认格式化器(以VS Code为例):
- 确保安装
Prettier - Code formatter插件 - 打开
settings.json(用户/工作区设置),添加以下配置:
{ "[typescript]": { "editor.defaultFormatter": "esbenp.prettier-vscode" }, "[javascript]": { "editor.defaultFormatter": "esbenp.prettier-vscode" }, // 若使用Deno专属后缀文件,需额外添加对应规则 "[typescriptreact]": { "editor.defaultFormatter": "esbenp.prettier-vscode" } }
- 在项目根目录创建
.prettierrc,确保空行规则符合预期:
{ "printWidth": 80, "tabWidth": 2, "useTabs": false, "singleQuote": true, "trailingComma": "es5", "bracketSpacing": true }
Prettier默认会保留代码空行,并自动合并连续多行空行为一行,完全匹配你的需求。
方案3:检查编辑器的DenoLS专属设置
部分编辑器(如VS Code)的Deno插件有独立格式化开关,需确认:
- 搜索
Deno: Format相关设置,确保未开启强制删除空行的选项 - 确认
deno.enable已正确启用,且无其他格式化插件与DenoLS冲突
内容的提问来源于stack exchange,提问作者Sigma Octantis
相关产品推荐
相关产品推荐

