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 (กลุ่มเดียวในกรณีนี้)