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

どのように/どこにパラメータを入力したいかは、私にはあまり明確ではありません。

1 つのオプションは、2 つのスニペットを定義することです。1 つは呼び出されmysnip、もう 1 つはスニペットmysnip1です。この場合、スニペット名でパラメーターを渡します。これら 2 つのスニペットの定義は簡単です。

もう 1 つのオプションは、1 つの snippet を定義し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 に答える
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最初と3番目の行だけになり、mysnipabすべてになります。

于 2016-04-16T14:25:51.343 に答える