ใน VimScript เทคนิคที่ดีที่สุดในการเปลี่ยนข้อความเมื่อเคอร์เซอร์เคลื่อนออกไปคืออะไร?
ฉันยังใหม่กับ vimscript ฉันกำลังพยายามหาวิธีที่ปลั๊กอินเช่น vimwiki หรือ vim-note ฟอร์แมตข้อความที่มองเห็นได้
ฉันรู้วิธีใช้ปากกาเน้นข้อความเพื่อเน้นตัวหนาขีดเส้นใต้ขีดทับ ฯลฯ
อย่างไรก็ตามปลั๊กอินเหล่านี้จะเปลี่ยนข้อความที่มองเห็นได้เมื่อเคอร์เซอร์เคลื่อนออกจากบรรทัด เมื่อเคอร์เซอร์กลับไปที่บรรทัดข้อความจะถูกแสดงอีกครั้งเพื่อแสดงสิ่งที่พิมพ์
นี่คือตัวอย่าง (vimwiki) ฉันสามารถพิมพ์ได้*bold*
เมื่อฉันเลื่อนเคอร์เซอร์ออกไปมันจะกลายเป็นตัวหนาเมื่อฉันนำเคอร์เซอร์กลับไปที่บรรทัดซึ่งจะแสดงผลใหม่เป็น*bold*
.
เทคนิคนี้ประสบความสำเร็จได้อย่างไร ฉันดูแหล่งที่มาของ vimwiki (ซึ่งซับซ้อนมาก) ฉันดู vim-note ด้วย แต่คิดไม่ออกว่าพวกเขาทำสวิตช์ที่ไหน (ฉันคิดว่าจะมีการทำแผนที่ให้<CR>
)
พวกเขาเก็บ 2 บัฟเฟอร์หนึ่งที่มองเห็นหนึ่งซ่อนอยู่หรือไม่?
ในvim-noteพวกเขาใช้ vimscript undo เพื่อให้ได้เทคนิคนี้หรือไม่? ถ้าเป็นเช่นนั้นมันทำงานอย่างไร?
คำตอบ
ปลั๊กอินเหล่านี้ใช้คุณลักษณะปกปิดไวยากรณ์ของ Vim
เป็นกลุ่มของการเน้นไวยากรณ์โดยปกติจะใช้ในการเปลี่ยนสี (หรือกำมือของคุณลักษณะอื่น ๆ เช่นการขีดเส้นใต้หรือ emboldening ก) ของข้อความ แต่คุณสมบัติปกปิดแทนที่จะช่วยให้รายการทั้งที่ถูกซ่อนไว้ทั้งหมดหรือถูกแทนที่ด้วยการจับคู่ตัวเดียว
ขึ้นอยู่กับ'concealcursor'การตั้งค่าของคุณข้อความจริงจะแสดงแบบเต็มเมื่อคุณเลื่อนเคอร์เซอร์ไปยังบรรทัดที่มีรายการ 'conceallevel'การตั้งค่านอกจากนี้ยังสามารถใช้ในการปิดการใช้งานconceal
ทั้งหมดหรือจะปรับเปลี่ยนไม่ว่าจะเป็นรายการที่ถูกซ่อนอยู่หรือถูกแทนที่
สำหรับตัวอย่างที่เฉพาะเจาะจงของคุณ vimwiki มีแนวโน้มที่จะใช้concealendsอาร์กิวเมนต์:syntax
เพื่อปกปิดส่วน*
ท้ายแต่ละด้านของขอบเขตไวยากรณ์ที่เป็นตัวหนา