1

我正在尝试根据参数在片段中插入一些额外的行。我不确定如何设计这样的片段。

snippet 'mysnip' 'snippets with optional lines'
  This snippet line1 is inserted by default
  <This line1a should be inserted if parameter1 is true>
  This snippet line2 is inserted by default
  <This line2a should be inserted if parameter1 is true>
endsnippet
4

3 回答 3

1

您可以使用正则表达式触发器来伪造它。仅当您不想在可选参数中包含制表位时,它才有效:

snippet /mysnip([a-z]*)/ "Optionals" r
this is always here!`!p
if "a" in match.group(1):
  snip += "only when a" 
if "b" in match.group(1):
  snip += "only when b"`
endsnippet

如果您键入mysnip,它将只是第一行,第一行mysnipb和第三行,并且mysnipab将是全部。

于 2016-04-16T14:25:51.343 回答
1

我不太清楚你想如何/在哪里输入参数。

一种选择是定义两个片段,一个被调用mysnip,另一个mysnip1- 在这种情况下,您在片段名称中传递参数,这两个片段的定义应该很简单。

另一种选择是只定义一个片段mysnip,并在此片段中的某处传递参数。一个工作示例可能如下所示:

snippet mysnip1
${1:Change this snippet line to have the text "True" (without quotes).}
This line is always present. `!p
if t[1]=="True":
    snip += "A line displayed when $1 has the text True.
`
endsnippet
于 2016-02-22T13:46:20.910 回答
0

你不能把你的可选行放在你的片段引擎将扩展的变量中吗?

如果它没有自动加入从空变量产生的空行,您可能必须让您的变量包含换行符并将其或之前/之后的行。

于 2016-02-22T09:40:30.857 回答