我还没有找到一个好方法。我目前的做法是首先选择所有:
vscode.commands.executeCommand("editor.action.selectAll").then(() =>{
textEditor.edit(editBuilder => editBuilder.replace(textEditor.selection, code));
vscode.commands.executeCommand("cursorMove", {"to": "viewPortTop"});
});
这是不理想的,因为它在选择然后更换时会闪烁。
答案 0 :(得分:8)
这可能不健全,但我一直在使用它:
var firstLine = textEditor.document.lineAt(0);
var lastLine = textEditor.document.lineAt(textEditor.document.lineCount - 1);
var textRange = new vscode.Range(0,
firstLine.range.start.character,
textEditor.document.lineCount - 1,
lastLine.range.end.character);
答案 1 :(得分:6)
一个较短的例子:
const fullText = document.getText()
const fullRange = new vscode.Range(
document.positionAt(0),
document.positionAt(fullText.length - 1)
)
答案 2 :(得分:4)
我希望这个例子可能有所帮助。资料来源:https://code.visualstudio.com/docs/extensions/example-hello-world#_a-simple-change
var editor = vscode.window.activeTextEditor;
if (!editor) {
return; // No open text editor
}
var selection = editor.selection;
var text = editor.document.getText(selection);
答案 3 :(得分:3)
您可以创建一个Range
,它只比文档文本长一个字符,并使用validateRange
将其修剪为正确的Range
。该方法查找最后一行文本,并使用最后一个字符作为Position
的结束Range
。
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));