9

我想在 Markdown 中使用项目符号而不是星号 (*) 字符来呈现 vscode 列表,这样顶层将使用 •,下一个将使用 ◦ 等。

我的第一种方法是使用 FontForge 创建一个连字字体,将 * 替换为 ◦,空格加 * 替换为 ◦,两个空格加 * 替换为 ▪,等等,但使用连字有一个明显的问题,即它不是上下文相关的,所以所有星号将被替换,而不仅仅是那些领先的。

查看vscode 文本装饰 API,似乎仅限于更改字体样式和颜色,而不是字体系列。有什么方法可以直观地替换 vscode 中的字符吗?它们仍应在源代码中保存为星号以成为有效的降价。

4

1 回答 1

3

从 VS Code 1.27 开始,最好的办法是编写一个扩展,在*字符上添加装饰器来做到这一点。查看装饰器示例扩展以开始使用

我认为当前的 vscode API 不允许您覆盖*文本本身,但您可以尝试通过使*字符透明并在其后添加自定义项目符号点来模拟这一点:

const level1DecorationType = vscode.window.createTextEditorDecorationType({
    color: 'transparent',
    after: {
        contentText: "◦"
    }
});

然后您的扩展只需将此样式应用于文档中的项目符号。

非正式地,你也可以使用这个装饰器来*完全替换字符:

const level1DecorationType = vscode.window.createTextEditorDecorationType({
    color: 'transparent',
    textDecoration: `none; display: inline-block; width: 0;`,
    after: {
        contentText: "◦"
    }
});

但是,这不能保证在未来正常工作或继续工作。

考虑打开一个功能请求以获得更好的装饰器支持

于 2018-09-05T00:36:16.057 回答