ฉันจะเน้นข้อความทั้งหมดในบรรทัดที่ทำให้เกิดการซิงค์ภายในได้อย่างไร


1

สมมติว่าฉันมีคำจำกัดความกลุ่มเหล่านี้:

syn match tasktag "\(\s\)\@<=@[a-zA-Z0-9_]\+"
syn match taskdone "\<[Dd]one\>" containedin=tasktag

ฉันจะระบุtaskdoneเพื่อเน้นข้อความทั้งหมดในบรรทัดได้อย่างไร ผมมองเช่นเดียวกับ:h syn-pattern-offset:h syn-region

คำตอบ:


0

ขั้นแรกการจับคู่ "tasktag" ของคุณไม่อนุญาตให้มีช่องว่างหรือ "ตัวคั่นคำ" อื่น ๆ แต่การจับคู่ "taskdone" ของคุณต้อง "เสร็จสิ้น" เพื่อเป็นคำที่ไม่ต่อเนื่องเนื่องจาก \ <และ \> อะตอมขอบเขตคำของคุณ

ประการที่สองการจับคู่ "taskdone" ของคุณถูกเขียนขึ้นเพื่อเน้นเฉพาะคำว่า "เสร็จสิ้น"

สมมติว่าฉันเข้าใจสิ่งที่คุณต้องการอย่างถูกต้องฉันได้ปรับเปลี่ยนการแข่งขันของคุณทั้งสอง:

syn match tasktag "\(\s\)\@<=@[a-zA-Z0-9_ ]\+"
syn match taskdone "@.*\<[Dd]one\>.*" containedin=tasktag

หากคุณยังไม่ได้ดำเนินการคุณจะต้องระบุการเน้นสำหรับการแข่งขันทั้งสอง ตัวอย่างเช่น:

highlight link tasktag TODO
highlight link taskdone Statement
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.