Как заменить определенный диапазон текста другим текстом или меткой в VSCode API

#visual-studio-code #vscode-extensions

#visual-studio-code #vscode-расширения

Вопрос:

Некоторые виды текста представлены в закодированной форме, я хочу преобразовать их все в форму UTF8. Например, преобразовать "测试" в "测试" , но также не изменять файл, значение "测试" отображается как "测试" , пока я его не отредактирую.

Есть ли способ сделать это?

Я пытался activeEditor.setDecorations() , но это может только изменить стиль, а также не может скрыть исходный текст. Я также пробовал HoverProvider — это помогает, но это не совсем то, что я хочу.

Ответ №1:

Это действительно возможно с помощью оформления (по крайней мере, сейчас в 1.52.1).

Мы можем добавить текст со свойствами before или after .

И мы можем скрыть исходный текст, установив для него 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