迭代和可变片段

Iterative and variable snippet

大家好,我正在尝试用 sublime 制作一个片段。以便它获取字符串并将它们放入位置 1、2 等。

例如这是我的字符串:

a, b, c, d, e

我想 运行 摘录它,使其成为:

console.info('a:', a, 'b:', b, 'c:', c, 'd:', d, 'e:', e);

我希望它适用于任意数量的变量,所以即使对于 a, b, c 它也会吐出 console.info('a:', a, 'b:', b, 'c:', c)

我尝试了各种 sublime 代码片段教程,但无法掌握,这可能吗?

Sublime text 有 snippet substitutions 但也许你不熟悉它的语法。您可以使用此示例片段内容:

<content><![CDATA[
console.info(${SELECTION/(\w+)[^\w]*/'\:', , /g}'_END_');
]]></content>

解释:

我们替换每一次出现的

(\w+)[^\w]*

在选择中:

'\:', , 
  • 在正则表达式中 \w 匹配一个单词字符(字母、数字或下划线)。这些是变量名使用的字符。
  • \w+ 匹配连续 \w,所以它匹配一个变量名,而 [\w]* 匹配非单词字符(空格,逗号,分隔符......)
  • 在括号中,我们捕获了一个对应于变量名的组,我们称它为第一组。
  • 然后是replacemenet。 </code>表示输出第一组(变量名)捕获的字符串。所以整个 <code>'\:', , 替换被替换为 'variableName:', variableName
  • \g 修饰符意味着这是全局完成的,对于选择中的每个变量名称($SELECTION 变量)。

这部分增加了一个问题,因为 a, b, c, d 被替换为 'a:', a, 'b:', b, 'c:', c, 'd:', d,(查看有问题的额外最后一个逗号)。这就是为什么我添加了一个最终的 '_END_' 标记,这是一个可能您想用空字符串替换的解决方法。

请记住,我们不会区分变量名称之间的分隔符,因此您可以使用逗号、空格、引号等,因为只会捕获变量名称。

所以两者都是:

age, name, height, weight
age     name,   height       weight

选择文本时,将替换为:

console.info('age:', age, 'name:', name, 'height:', height, 'weight:', weight, '_END_');