ตามที่ @muru พูดถึงในความคิดเห็นคุณสามารถใช้คลาสสมมูล (อธิบายไว้ใน:help /[[) ซึ่งดูเหมือนจะเป็นนิพจน์คลาสอักขระที่ประเมินว่าเป็นชุดของอักขระที่คล้ายกัน
ตัวอย่างเช่นหากต้องการค้นหาkočičkaและkocickaใช้รูปแบบเดียวกันคุณสามารถใช้สิ่งนี้:
ko[[=c=]]i[[=c=]]ka
โดยที่[[=c=]]เป็นคลาสเทียบเท่าสำหรับcตัวละคร
หากต้องการแทรกคลาสอักขระนี้โดยอัตโนมัติทุกครั้งที่คุณกดปุ่มcขณะทำการค้นหาคุณสามารถใช้การจับคู่นี้:
cnoremap <expr> c getcmdtype() =~ '[?/]' ? '[[=c=]]' : 'c'
ซึ่งสามารถพังทลายลงได้ดังนี้:
<expr> พิมพ์การประเมินผลของการแสดงออก
getcmdtype() =~ '[?/]' ทดสอบว่าคุณกำลังเขียนย้อนหลังหรือค้นหาไปข้างหน้า
'[[=c=]]'ส่งคืนคลาสสมมูลของcอักขระหากการทดสอบก่อนหน้านี้สำเร็จ
'c'กลับcตัวละครเป็นอย่างอื่น
การแมปก่อนหน้ามี 2 ข้อบกพร่อง:
- ครอบคลุม
cเฉพาะตัวละครเท่านั้น
- มันทำให้รูปแบบการอ่านยาก
มันสามารถปรับปรุงได้โดยทำการแมปใหม่<CR>เช่นนี้
cnoremap <CR> <C-\>e getcmdtype() =~ '[?/]' ? substitute(getcmdline(), '\a', '[[=\0=]]', 'g'): getcmdline()<CR><CR>
เมื่อคุณกด<CR>หลังจากเขียนรูปแบบสำหรับการค้นหาการจับคู่จะแทนที่อักขระที่เป็นตัวอักษรทั้งหมดโดยอัตโนมัติ
การทำแผนที่สำหรับ<CR>คล้ายกับการทำแผนที่ก่อนหน้านี้สำหรับcยกเว้นไม่ใช้อาร์กิวเมนต์แต่การทำแผนที่ระบบ<expr> อนุญาตให้คุณแทรกการประเมินผลของนิพจน์ในขณะที่อนุญาตให้คุณแทนที่บรรทัดคำสั่งทั้งหมดด้วยการประเมินผลของนิพจน์<C-\>e
<expr><C-\>e
:h [[=:h patterns-composing