UltiSnips正規表現macthing

Oct 16 2020

ラテックスのインライン方程式を表示方程式に変換する可能性が欲しいです。

だから私はしたい$something$になるために

$$ something $$

私の試みはこれでした:

snippet "$(.+)$" "whatever" r
$$ \1 $$
$1
endsnippet

私の理解では、(.+)(グループでキャプチャされた)任意の文字に1回以上\1一致し、グループ内で一致を出力します。

また、Python補間を使用しようとし!p snip.rv = match.group(1)ましたが、成功しませんでした。

どちらの試みも、タブが挿入されるだけです。何か案は?

回答

1 RicardoKullock Oct 18 2020 at 01:40

Jake Grossmanのコメントのおかげで、私は最終的$に正規表現トリガーをエスケープする必要があることに気付きました:(また、Python補間を使用する必要がありました)

snippet "\$(.+)\$" "whatever" r $$
`!p snip.rv = match.group(1)`
$$ $0
endsnippet

直後のトリガーは、のsnippet間のすべてに一致$し、グループにキャプチャします(を使用して())

Python補間でsnip.rvは、は「戻り値」を表しmatch.group(1)、正規表現の最初のグループ(この場合は1つだけ)を出力します。