Sublime Text 片段中句点之前变量名称的正则表达式

标签 regex sublimetext3 sublimetext

因此,我尝试为 Sublime Text 3 的对象调用的 forEach 语句编写一个片段。

//what I have written at the point where the snippet is triggered
myObject.forEa

// what should appear after triggering the snippet
Array.prototype.forEach.call(myObject, function(){

})

这里的问题是在代码片段的正则表达式中捕获 myObject ,以便我在编写代码片段时可以重用它。

到目前为止,我有一个正则表达式,可以捕获任何适合成为我需要的 myObject 的内容:(\w|\.)+\b\.。但我需要捕获光标之前的确切位置。

您还可以使用一些环境变量,例如光标所在行的内容、光标的水平位置... Official documentation for snippets in Sublime Text .

可以吗?

最佳答案

据我所知,您可以使用变量$TM_CURRENT_LINE来获取该行的内容,但唯一被替换的是选项卡触发器(forEa ),该行的其余部分仍然存在。我给你一个例子和一个替代方案。

示例(未按预期工作):

<content><![CDATA[Array.prototype.forEach.call(${TM_CURRENT_LINE/^[ \t]*(\S*)\.$/\1/g}, function(){
    ${1:functionConent}
})]]></content>

变化

myObject.forEa

myObject.Array.prototype.forEach.call(myObject, function(){
    functionConent
})

因此,您可以使用该行内容,但 myObject. 仍位于该行的开头。

替代方案(不完全是您想要的,但可以正常工作):

我想你知道如何这样做,但我认为最好用简单的方法:

<content><![CDATA[Array.prototype.forEach.call(${1:object}, function(){
    ${2:functionConent}
})]]></content>

这会改变

forEa

Array.prototype.forEach.call(object, function(){
    functionConent
})

更改后焦点位于第一个字段(对象),因此您可以轻松编写它,然后您可以使用 tab 移动到下一个字段(功能内容)。 p>

关于Sublime Text 片段中句点之前变量名称的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30677393/

相关文章:

visual-studio-code - 是否可以为多个游标键入不同的值?

regex - 如何打印与最后一行的第一个字段匹配的所有行

python - 在Python中通过REGEX查找项目的索引

javascript - Antd 通过模式验证不会触发错误

python - 在 Sublime Text 3 中只构建一行 - python

JavaScript 字符串替换为棘手的正则表达式

python - 如何停止运行不和谐的机器人进程(python)

javascript - Sublime 着色:javascript block in haml

sublimetext2 - Sublime - 从搜索结果中删除 .cache 文件