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