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

如何将Prettier格式化Markdown斜体的符号改为星号?

Prettier 格式化Markdown时斜体默认下划线改为星号的实现方法

Prettier 核心设计遵循「少配置、输出统一」的原则,目前官方版本确实没有开放斜体标记符的自定义配置项,查阅官方文档找不到对应入口是正常情况。
默认使用_作为斜体标记确实存在兼容缺陷:当下划线被英文字符、数字等内容包围时,不少Markdown解析器会将其识别为普通字符而非格式标记,通用Markdown语法规范也更推荐使用*作为斜体标记。

以下是三种可落地的实现方案:

  • 方案1:使用社区插件(最稳定,推荐)
    社区维护的Markdown格式化插件支持自定义斜体标记,配置后可以完全替换默认的下划线输出逻辑:
    1. 安装插件到项目开发依赖
    npm install --save-dev prettier-plugin-consistent-markdown
    
    1. 在项目的Prettier配置文件(.prettierrc/prettier.config.js)中添加如下配置:
    {
      "plugins": ["prettier-plugin-consistent-markdown"],
      "markdownEmphasis": "*"
    }
    
    配置完成后重新执行格式化命令,所有Markdown文件的斜体就会统一使用*包裹,不会再生成下划线标记的斜体内容。
  • 方案2:追加替换脚本(无额外插件依赖)
    如果不想引入第三方社区插件,可以在格式化命令后追加一段轻量替换逻辑,批量修正斜体标记:
    在package.json的脚本配置中调整Markdown格式化命令:
    {
      "scripts": {
        "format:md": "prettier --write **/*.md && node -e \"const fs=require('fs');const glob=require('glob');glob.sync('**/*.md',{ignore:'node_modules/**'}).forEach(file=>{let content=fs.readFileSync(file,'utf8');content=content.replace(/(^|[^*\\w])_([^_\\n]+?)_([^*\\w]|$)/g,'$1*$2*$3');fs.writeFileSync(file,content)})\""
      }
    }
    

    注意:该正则只会匹配符合斜体语法规则的独立下划线标记,不会误改代码块、链接、普通文本中的下划线内容,正式使用前建议先在测试文件上验证匹配效果。

  • 方案3:升级最新版Prettier(零配置适配)
    较新版本的Prettier已经调整了斜体标记的输出逻辑,当检测到斜体内容周边存在可能触发解析异常的字符时,会自动优先使用*作为标记,可以先升级到最新稳定版测试是否满足需求:
    npm install --save-dev prettier@latest
    
    该方案的局限是目前原生版本仍未开放强制全量使用星号的配置,在它判定无兼容风险的场景下,还是可能输出下划线标记的斜体。

内容的提问来源于stack exchange,提问作者I'M YourOnly.One

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.09 16:15:43