VSCode扩展如何使用位置“ with(change)” API

时间:2019-07-18 16:52:16

标签: visual-studio-code vscode-extensions

我正在开发VSCode插件,现在想获取一行的最后一个字符的位置。现在,我想使用“ with”方法通过已知的Position对象获得它。

官方参考在这里:https://code.visualstudio.com/api/references/vscode-api#Position

您看到“ with”方法有2个重载。现在,我想使用“ with(change:{line:number,character:number})”方法:

 const endPos = startPos.with(change={ line: 1, character: -1 });

startPos是一个“位置”对象。 预期该代码将给出startPos行的最后一个字符的位置。 但是此代码失败,错误消息是: Cannot find name 'change'. Did you mean 'onchange'?

那么如何正确使用此API?谢谢。

PS:看来我误解了这种方法。它只是将位置设置为给定值,而不是在其上添加“差异”。如果您有更好的(有效)方式来获取已知位置的行尾位置,请告诉我?。

2 个答案:

答案 0 :(得分:0)

您输入的代码有误,而不是:

startPos.with(change={ line: 1, character: -1 });

写:

startPos.with(change: { line: 1, character: -1 });

答案 1 :(得分:0)

获取startPos的行并使用其长度来获取最后一个字符

let curLineText = editor.document.lineAt(startPos);
let lastCharPos = new vscode.Position(curLinePos.line, Math.max(curLineText.text.length-1, 0));

如果要在最后一个字符之后定位,请删除-1