如何在扩展中使用cursorMove命令,以便在单击TreeItem元素时光标跳转到特定位置



我目前正试图找到一个执行命令,以便光标移动到我已经保存为变量的特定位置

我的位置保存为line = functions[i].location.range.start.line用于特定行,column = functions[i].location.range.start.character用于特定位置
我已经知道我可以用new vscode.Position(line,column)创建位置

现在,我该如何将其准确地集成到命令中
"cursorMove({to: $ViewPosition, select: boolean, by: $By, value: number})";?

默认情况下,我可以将光标向上移动一行,使用

vscode.commands.executeCommand("cursorMove",{
to: "up",
by: "wrappedLine",
select: false,
value: 1
});

我想从函数数组中实现我的位置,以便命令

let clickEvent = vscode.commands.registerCommand('homeItem.click', (functions[i].location) => {
vscode.commands.executeCommand("cursorMove", {
to: x,
by: x,
select: false,
value: x
});
});

将光标焦点设置为提供的位置

我看到两个选项:

  1. cursorMove相对于当前位置。并不像我想你知道的那样处于绝对的地位。因此,您必须获得当前光标位置vscode.window.activeTextEditor.selection.active.lineline = functions[i].location.range.start.line之间的差值,并在cursorMove命令中使用该差值(在计算后,知道您需要向上还是向下(

如果您关心的话,您必须对character执行同样的操作,并在正确的行中执行第二个cursorMove以按字符移动。所以这是一项艰巨的工作。

  1. 只需通过设置selection来设置光标位置
const myPos = new vscode.Position(x,x);     // I think you know how to get the values, let us know if you don't
vscode.window.activeTextEditor?.selections = [new vscode.Selection(myPos, myPos)];

或者先检查一下:

if (vscode.window.activeTextEditor) {
const myPos = new vscode.Position(x,x);     // I think you know how to get the values, let us know if you don't
vscode.window.activeTextEditor?.selections = [new vscode.Selection(myPos, myPos)];
}

最新更新