javascript - VS Code 函数转到下一个空间
问题描述
我正在尝试编写一个函数,它将从光标转到下一个空间。这是我到目前为止所拥有的,但我不知道如何从当前光标位置进行搜索:
// 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)
这应该确保您只在光标位置之后找到匹配项
推荐阅读
- swift - 在 Firebase Google LogIn Xcode 11 之后进行转场
- amazon-web-services - 是否可以接收每个状态机的执行 Arns 列表
- html - 如何在 CSS 中重新显示屏幕大小上的最后一个类型元素?
- node.js - 我无法配置 reactjs
- asp.net - RouteConfig 无法从控制器中找到 URL 地址
- javascript - 使用 d3.js 在 x 轴中创建带有文本数据的多折线图
- java - 为什么运行示例 flink 应用程序会引发此错误?
- php - 为同一时区获取不同的时区偏移量?
- javascript - 如何在javascript中过滤掉不同的数组值
- android - 无法设置导航栏背景颜色 - Android