我想在Markdown中使用vscode渲染列表而不是星号(*)来标记项目符号,以便顶层使用•,下一层使用◦,等等。
我的第一种方法是用FontForge创建连字字体,用*替换◦,空格加*替换为◦,两个空格加*替换为▪,依此类推,但是使用连字存在一个明显的问题,即它对上下文不敏感,因此所有星号都将被替换,而不仅仅是前导星号。
从vscode text decoration API看,似乎仅限于更改字体样式和颜色,而不是字体系列。有什么方法可以直观地替换vscode中的字符吗?它们仍应在源代码中另存为星号,以确保有效的降价。
答案 0 :(得分:2)
从VS Code 1.27开始,最好的办法是编写一个扩展程序,在*
字符上添加修饰符以实现此目的。看一下decorator example extension入门
我不认为当前的vscode API允许您覆盖*
文本本身,但是您可以通过使*
字符透明并在其后添加自定义项目符号来尝试模仿此文本: / p>
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: "◦"
}
});
但是,不能保证它可以正常工作或将来继续工作。
考虑opening a feature request,以获得对此更好的装饰器支持