programing

문서의 전체 텍스트 범위를 가져오기 위한 VS 코드 확장 API?

newsource 2023. 6. 14. 21:54

문서의 전체 텍스트 범위를 가져오기 위한 VS 코드 확장 API?

저는 그것을 하는 좋은 방법을 찾지 못했습니다.현재의 접근 방식은 모든 것을 먼저 선택하는 것입니다.

vscode.commands.executeCommand("editor.action.selectAll").then(() =>{
    textEditor.edit(editBuilder => editBuilder.replace(textEditor.selection, code));
    vscode.commands.executeCommand("cursorMove", {"to": "viewPortTop"});
});

선택 후 교체할 때 깜박이기 때문에 이상적이지 않습니다.

이 기능은 강력하지 않을 수도 있지만, 저는 이 기능을 사용해 왔습니다.

var firstLine = textEditor.document.lineAt(0);
var lastLine = textEditor.document.lineAt(textEditor.document.lineCount - 1);
var textRange = new vscode.Range(firstLine.range.start, lastLine.range.end);

이 사례가 도움이 되기를 바랍니다.

var editor = vscode.window.activeTextEditor;
if (!editor) {
    return; // No open text editor
}

var selection = editor.selection;
var text = editor.document.getText(selection);

출처 : vscode 확장 샘플 > 문서 편집 샘플

다음을 생성할 수 있습니다.Range문서 텍스트 및 사용보다 한 글자만 더 길면 됩니다.validateRange그것을 정확하게 다듬기 위해.Range메소드는 텍스트의 마지막 줄을 찾고 마지막 문자를 끝으로 사용합니다.PositionRange.

let invalidRange = new Range(0, 0, textDocument.lineCount /*intentionally missing the '-1' */, 0);
let fullRange = textDocument.validateRange(invalidRange);
editor.edit(edit => edit.replace(fullRange, newText));

더 짧은 예는 다음과 같습니다.

const fullText = document.getText()

const fullRange = new vscode.Range(
    document.positionAt(0),
    document.positionAt(fullText.length - 1)
)

언급URL : https://stackoverflow.com/questions/45203543/vs-code-extension-api-to-get-the-range-of-the-whole-text-of-a-document