UltiSnips regex 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 ในที่สุดฉันก็รู้ว่า$ใน regex trigger ควรจะ Escape: (ต้องใช้การแก้ไข python ด้วย)

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

ทริกเกอร์ทันทีsnippetจะจับคู่อะไรก็ได้ระหว่าง$และจับมันในกลุ่ม (พร้อมกับ())

ในการแก้ไข python snip.rvย่อมาจาก "return value" และmatch.group(1)พิมพ์กลุ่มแรกใน regex (กลุ่มเดียวในกรณีนี้)