Website-Suche

TypeScript - Auswahlbereich im Visual Studio Code-Dokument festlegen


Ich habe einen Befehl in einer Erweiterung, bevor ich den Befehl ausführe, möchte ich den Auswahlbereich ändern, um die ganzen Zeilen zu erhalten...

const sel = textEditor.selection;
const firstLine = textEditor.document.lineAt(sel.start.line);
const lastLine = textEditor.document.lineAt(sel.end.line);

const range = new vscode.Range(firstLine.lineNumber, firstLine.range.start.character, lastLine.lineNumber, lastLine.range.end.character);

Ich habe einen neuen Bereich erstellt, aber ich weiß nicht, wie ich die Auswahl des Dokuments auf einen neuen Bereich setzen kann...

Antwort #1

new Selection() hat 2 Überladungen (2 oder 4 Argumente):

  1. Selection(anchor: vscode.Position, active: vscode.Position)
  2. Selection(anchorLine: number, anchorCharacter: number, activeLine: number, activeCharacter: number)

Beispiel, unter Verwendung von 4 Argumenten:

textEditor.selection = new vscode.Selection(firstLine.lineNumber, firstLine.range.start.character, 
lastLine.lineNumber, lastLine.range.end.character)

Um mehrere Cursor zu erstellen, müssen Sie textEditor.selections setzen

textEditor.selections = [
    new vscode.Selection(0, 0, 0, 10),
    new vscode.Selection(1, 0, 1, 10),
];

Antwort #2

Zum Registrieren eines Befehls zum Festlegen der Cursorposition habe ich dies verwendet:

let cmd = vscode.commands.registerTextEditorCommand('extension.mysnippet', (te) => {
  // selection start = line 3, char 5 ||| selection end = line 3, char 5
  te.selection = new vscode.Selection(5, 3, 5, 3)
});
context.subscriptions.push(cmd);

Verwandte Artikel