如何在VSCode API中用其他文本或标签替换特定范围的文本

时间:2019-04-03 08:28:05

标签: visual-studio-code vscode-extensions

某些类型的文本采用编码形式,我想将它们全部转换为UTF8形式。 例如将"%E6%B5%8B%E8%AF%95"转换为"测试",但也不要更改文件,这意味着"%E6%B5%8B%E8%AF%95"会显示为"测试",直到我对其进行编辑。

有办法吗?

我尝试过activeEditor.setDecorations(),但它只能更改样式,也不能隐藏原始文本。我也尝试过HoverProvider-可以,但这并不是我想要的。

1 个答案:

答案 0 :(得分:0)

这确实可以通过使用装饰来实现(至少现在在 1.52.1 中)。

我们可以使用 beforeafter 属性添加文本。

我们可以通过将其 opacity 设置为 0 并通过使用负值将 letterSpacing 的有效宽度减小到 0 来隐藏原始文本。

const replacementDecoration = vscode.window.createTextEditorDecorationType({
        opacity: '0',
        letterSpacing: '-100px',
        before: {
            contentText: 'test',
        }
    })

https://code.visualstudio.com/api/references/vscode-api#DecorationRenderOptions