javascript - VS Code函数去下一个空间

标签 javascript visual-studio-code vscode-extensions

我正在尝试编写一个函数,它将从光标转到下一个空格。这是我目前所拥有的,但我不知道如何从当前光标位置进行搜索:

// 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/

相关文章:

visual-studio-code - 如何自己在 VSCODE 上发布扩展

typescript - 如何计算 vscode 扩展中文件夹中的文件数量?

javascript - 如何向可以访问其变量的javascript对象添加函数

python - VS Code 和 python 调试器返回错误,但可以在终端中运行

python - vscode anacondapython 中 undefined variable url

visual-studio-code - 如何在 vscode 中为 txt 文件添加彩色文本或突出显示?

visual-studio-code - 在 vscode 扩展 api 的工作区中创建的新文件的监听器

javascript - 如何使用 scaleTime 水平定位背景矩形

带有 colorbox 的 Javascript 调试问题

javascript - 如何删除一个单选按钮的后值以呈现新的单选结果