最近开始用 VS Code,因为有 Prettier,用它来编辑文本,尤其是 Markdown 的自动格式化非常好用。但是有个问题,Prettier 自动化格式的时候,使用 *的项目列表有时候会变成 -,有时候不会,像抽盲盒令人困惑,可以让它统一都用 -吗?
我编造了一段文本,分别尝试用 VSCode 中的 Prettier 和 Prettier playground 格式化,得到的结果都是一致的:

其中第一段因为是用单空格缩进,不被认为是合法的多级列表,所以格式化后就变成了单级列表。
1.x 这一段是混用了多种无序列表的符号,优先统一为 - 符号,其次是 * 符号。
可以直接访问这个链接查看:Playground
我不太确定是不是跟你视频中没录到的上下文有关,建议把完整文本发上来看看。
在网页版好像正常一些,更不容易出现 * 。但是在你的测试例子中,仍然出现了*。

我希望的效果是,要么全部转换为-,要么全部转换为*。
我新建了一个md文件,全文如下:
- 好的
- 聪明
- 喜欢
* 还行
- 不行
* 希望不要用星号
- 还是有星号
结果:

问题:
在第二层级的缩进,第一个是-,后面两个却是*。
已经解释过了
嗯,我注意到了原文是多种混用。我的意思是多种项目列表符号混用,应该全部转换为一种。
现在这种一行-,一行*,在我看来是不正常的。
混用列表符号的情况下,每一条列表项都被认为是单独列表中的唯一列表项:
* 1
+ 2
- 3
↑ 实际上会被认为是:↓
- 1
- 2
- 3
用 AST 来表示会更加直观一点:
{
"type": "root",
"children": [
{
"type": "list",
"ordered": false,
"start": null,
"spread": false,
"children": [
{
"type": "listItem",
"spread": false,
"checked": null,
"children": [
{
"type": "paragraph",
"children": [
{
"type": "text",
"value": "1"
}
]
}
]
}
]
},
{
"type": "list",
"ordered": false,
"start": null,
"spread": false,
"children": [
{
"type": "listItem",
"spread": false,
"checked": null,
"children": [
{
"type": "paragraph",
"children": [
{
"type": "text",
"value": "2"
}
]
}
]
}
]
},
{
"type": "list",
"ordered": false,
"start": null,
"spread": false,
"children": [
{
"type": "listItem",
"spread": false,
"checked": null,
"children": [
{
"type": "paragraph",
"children": [
{
"type": "text",
"value": "3"
}
]
}
]
}
]
}
]
}
相对应的,如果是:
* 1
* 2
* 3
它的 AST 是:
{
"type": "root",
"children": [
{
"type": "list",
"ordered": false,
"start": null,
"spread": false,
"children": [
{
"type": "listItem",
"spread": false,
"checked": null,
"children": [
{
"type": "paragraph",
"children": [
{
"type": "text",
"value": "1"
}
]
}
]
},
{
"type": "listItem",
"spread": false,
"checked": null,
"children": [
{
"type": "paragraph",
"children": [
{
"type": "text",
"value": "2"
}
]
}
]
},
{
"type": "listItem",
"spread": false,
"checked": null,
"children": [
{
"type": "paragraph",
"children": [
{
"type": "text",
"value": "3"
}
]
}
]
}
]
}
]
}
综上,混用列表符号本就是充满歧义的,应该避免混用。
可以试试 Markdown Linter 我记得它可以提示那些不规范的地方,然后也提供了格式化。
感谢你的详细解答,现在我对项目符号混排有更深了解。
我其实并不会主动使用多种项目符号混排。补充说下我提问的原因,是因为我习惯用 * 做项目符号。就像我第一个帖子录屏里那样,我只打了 *,结果 Prettier 保存时给我转成 - 了。但 Prettier 它转换不彻底,总会剩下一两个 * 在里面。使得看起来我在使用两种符号,但其实并非如此,这恰恰是让我困扰的地方。
我还蛮喜欢 Prettier 的风格,但我会试试你推荐的 Markdown Linter。