迭代和变量片段

时间:2015-06-28 09:26:39

标签: sublimetext2 sublimetext3 sublimetext

大家好,我试图在崇高中制作一个片段。这样它就会占用字符串并将它们放入位置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)

我尝试了各种各样的崇高片段教程但无法管理它,这可能吗?

1 个答案:

答案 0 :(得分:2)

Sublime文本有snippet substitutions但您可能不熟悉它的语法。您可以使用此示例代码段内容:

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

<强>解释

我们替换

的每一次出现
(\w+)[^\w]*
选择中的

'\1\:', \1, 
  • 正则表达式\w内部匹配单词字符(字母,数字或非字符)。这些是变量名称使用的字符。
  • \w+匹配contiguos \w,因此它匹配变量名称,而[\w]*匹配非单词字符(空格,逗号,分隔符......)
  • 在parénthesis中我们捕获一个对应变量名的组,让我们先调用它。
  • 然后是替换网。 \1表示输出在第一组中捕获的字符串(变量名称)。因此,'\1\:', \1,
  • 替换了整个'variableName:', variableName替换
  • \g修饰符表示这是全局完成的,对于选择内的每个变量名称($SELECTION变量)。

这部分增加了一个问题,因为a, b, c, d被替换为'a:', a, 'b:', b, 'c:', c, 'd:', d,(查看有问题的额外最终逗号)。这就是为什么我添加了一个最终的'_END_'令牌,这是一个可能你想要用空字符串替换的workarund。

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

所以两者:

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

在选择文本并使用以下代码调用代码段(键绑定或命令为palete)时替换:

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