清除异端片段
要删除“改进”for-loop sn-p,请在您的包文件夹(Preferences>Browse Packages)中创建一个名为“JavaScript”的文件夹,然后创建一个名为"for-()-{}-(faster).sublime-snippet" 的文件在 JavaScript 文件夹中。在此文件中,放置以下内容:
<snippet>
<content><![CDATA[$1]]></content>
</snippet>
保存并重新启动 Sublime。这将禁用内置的 bass-ackwards "Improved" loop sn-p 建议。此时,只有普通的for (...) {...} sn-p 会被激活。
关于反向 For 循环
递减不会提供任何性能提升。性能提升仅是由于减少了必须计算数组长度的次数:使用for(i=0;i<Things.length;++i),每次迭代都会计算Things.length;对于for(i=Things.length-1; i>=0; --i),Things.length 只计算一次。 (见here。)
通过使用以下语法声明一个新变量来保存Things.length 的值,可以获得这种轻微的性能提升:
for (var i = 0, l = Things.length; i < l; ++i) {}
创建替换片段
为了替换默认的捆绑“改进”for循环,我们将上述语法添加到for-()-{}-(faster).sublime-snippet文件中。为了确保两个Things 占位符都被选中,我们使用${1:Things}。新的 sn-p 文件内容应如下所示:
<snippet>
<content><![CDATA[for (var i=0, il=${1:Things}.length; i<il; ++i) {
${1:Things}[i];
}]]>
</content>
<tabTrigger>for</tabTrigger>
<scope>source.js</scope>
<description>for (... {... Custom Improved For-Loop</description>
</snippet>
确保 sn-p 是 properly indented。 请注意,缩进时必须使用制表符而不是空格。保存并重启 Sublime。
如果您想为另一种语言创建类似的循环,请将内容复制到一个新文件中,并将内容和范围调整为该语言。编码愉快。
编辑:一些更高级的片段
这些是我目前使用的一些 sn-ps,它们更高级,因为它们使用多个字段(点击选项卡在字段之间切换)。此外,还有一个嵌套循环 sn-p 可通过键入 forfor 访问。
文件名:for-()-{}-(faster).sublime-snippet
<snippet>
<content><![CDATA[for (var ${1:i}=0, ${1:i}l=${2:Things}.length; ${1:i}<${1:i}l; ++${1:i}) {
${2:Things}[${1:i}];
}]]>
</content>
<tabTrigger>for</tabTrigger>
<scope>source.js</scope>
<description>for (... {... Custom Improved For-Loop</description>
</snippet>
文件名:for-nested-js-(faster).sublime-snippet
<snippet>
<content><![CDATA[for (var ${1:i}=0, ${1:i}l=${2:condition}; ${1:i}<${1:i}l; ++${1:i}) {
for (var ${3:j}=0, ${3:j}l=${4:condition}; ${3:j}<${3:j}l; ++${3:j}) {
${5:statement};
}
}]]>
</content>
<tabTrigger>forfor</tabTrigger>
<scope>source.js</scope>
<description>for(..){for... Faster Nested For-Loop</description>
</snippet>