我正在尝试根据参数在片段中插入一些额外的行。我不确定如何设计这样的片段。
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
答案 0 :(得分: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
答案 1 :(得分:1)
你可以使用正则表达式触发器伪造它。它只适用于您不希望在可选参数中使用tabstops的情况:
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
将是全部。
答案 2 :(得分:0)
你不能把你的可选行放在你的代码片段引擎扩展的变量中吗?
如果它没有自动加入由空变量产生的空行,你可能必须让你的变量包含换行符并放在它之前/之后。