【问题标题】:How can I write "dynamic" snippets in sublime text?如何在崇高的文本中编写“动态”片段?
【发布时间】:2015-12-13 19:15:04
【问题描述】:

说我的代码是这样的:

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

是否可以在每次按 Tab 时生成 | ${place_holder} of () 对?

我现在的sn-p是:

<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>

但是如您所见,用户第四次点击标签时,我无法生成另一个 | of () 对。

【问题讨论】:

  • 为什么不将| ${1} of (${2}) 分配给键盘快捷键?

标签: sublimetext2 sublimetext3 sublimetext sublime-text-plugin


【解决方案1】:

这是一个使用替换的(不雅的)hack。选择第四个字段后,按您希望的多次空格键。

<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 还提供了一个关于如何传递参数的有用示例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-23
    • 2015-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多