如何在崇高文本中编写“动态”片段?

时间:2015-09-17 02:05:24

标签: sublimetext2 sublimetext3 sublimetext sublime-text-plugin

说我的代码是这样的:

datatype type_name =
  | a of ()
  | b of ()
  ...  // more

每次按Tab键都可以生成| ${place_holder} of ()对吗?

我目前的片段是:

<snippet>
  <content><![CDATA[
datatype ${1:type_name} =
  | ${2} of (${3})
  ${4}
]]></content>
  <!-- Optional: Set a tabTrigger to define how to trigger the snippet -->
  <tabTrigger>dat</tabTrigger>
  <!-- Optional: Set a scope to limit where the snippet will trigger -->
  <scope>source.ats</scope>
</snippet>

但是如你所见,那么用户第4次点击了标签页,我无法生成另一个| of ()对。

1 个答案:

答案 0 :(得分:0)

这是一个使用替换的(不优雅的)黑客攻击。选择第四个字段时,可按任意多次按空格键。

<snippet>
  <content><![CDATA[
datatype ${1:type_name} =
  | ${2} of (${3})
  ${4:(spacebar)}
  ${4/ /| a of ()\n\t/g}
]]></content>
  <!-- Optional: Set a tabTrigger to define how to trigger the snippet -->
  <tabTrigger>dat</tabTrigger>
  <!-- Optional: Set a scope to limit where the snippet will trigger -->
  <scope>source.python</scope>
</snippet>

通过$ PARAM环境变量可以实现更优雅的解决方案:您可以将整数传递给insertSnippet,并使用它通过上面显示的替换示例构造替换文本。文档是here,但遗憾的是,它没有提供有关$ PARAM的信息。 This post还提供了有关如何传递参数的有用示例。