You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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为例):

  1. 确保安装Prettier - Code formatter插件
  2. 打开settings.json(用户/工作区设置),添加以下配置:
{
  "[typescript]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "[javascript]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  // 若使用Deno专属后缀文件,需额外添加对应规则
  "[typescriptreact]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  }
}
  1. 在项目根目录创建.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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 18:12:13