我正在尝试编写一个函数,它将从光标转到下一个空格。这是我目前所拥有的,但我不知道如何从当前光标位置进行搜索:
// go to next space
function goToNextSpace(args) {
const vscode = args.require('vscode');
const regEx = /\s/;
const ACTIVE_EDITOR = vscode.window.activeTextEditor;
const text = ACTIVE_EDITOR.document.getText();
const match = regEx.exec(text);
const nextPos = ACTIVE_EDITOR.document.positionAt(match.index);
return ACTIVE_EDITOR.selection = new vscode.Selection(
nextPos, nextPos
);
}
我一直在看https://code.visualstudio.com/api/references/vscode-api但我根本找不到它在哪里引用了如何使用正则表达式。
Matt 反馈后的 V2
感谢@MattBierner,我现在有了以下代码。我在索引中添加了 1,以确保每次调用它时,它都会转到下一个空间(而不是只停留在上次找到的空间上)。现在,如果在一行的末尾,我缺少一种进入下一行的下一个空格的方法。
// go to next space
function goToNextSpace(args) {
const vscode = args.require('vscode');
const ACTIVE_EDITOR = vscode.window.activeTextEditor;
const text = ACTIVE_EDITOR.document.getText();
const regEx = /\s/g;
regEx.lastIndex = ACTIVE_EDITOR.document.offsetAt(ACTIVE_EDITOR.selection.active) + 1;
const match = regEx.exec(text);
const nextPos = ACTIVE_EDITOR.document.positionAt(match.index);
return ACTIVE_EDITOR.selection = new vscode.Selection(
nextPos, nextPos
);
}
最佳答案
尝试设置 lastIndex
将正则表达式的属性设置为当前光标位置 (ACTIVE_EDITOR.selection.active
):
// You also need to enable global matching mode on your regular expression
const regEx = /\s/g;
regEx.lastIndex = ACTIVE_EDITOR.document.offsetAt(ACTIVE_EDITOR.selection.active)
这应该确保您只在光标位置之后找到匹配项
关于javascript - VS Code函数去下一个空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56998588/