迭代和可变片段
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_');
大家好,我正在尝试用 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_');