Di VimScript, apa teknik terbaik untuk mengubah teks saat kursor menjauh?
Saya baru mengenal vimscript. Saya mencoba mencari tahu bagaimana plugin seperti vimwiki atau vim-note memformat ulang teks yang terlihat.
Saya tahu cara menggunakan penyorot sintaks untuk menyorot, menebalkan, menggarisbawahi, mencoret, dll.
Namun plugin ini mengubah teks yang terlihat saat kursor menjauh dari garis. Saat kursor dikembalikan ke baris, teks dirender ulang untuk menunjukkan apa yang telah diketik.
Berikut adalah contoh (vimwiki), saya bisa mengetik *bold*
ketika saya memindahkan kursor itu berubah menjadi tebal , ketika saya membawa kursor kembali ke baris itu dirender ulang sebagai *bold*
.
Bagaimana teknik ini dicapai. Saya memang melihat-lihat sumber vimwiki (yang sangat rumit), saya juga melihat vim-note tetapi tidak tahu di mana mereka melakukan sakelar (saya akan mengira akan ada pemetaan untuk <CR>
).
Apakah mereka menyimpan 2 buffer, satu terlihat, satu tersembunyi?
Di vim-note , apakah mereka menggunakan vimscript undo untuk mencapai teknik ini? Kalau begitu, bagamana itu bekerja?
Jawaban
Plugin ini menggunakan fitur penyembunyian sintaks Vim .
Penyorotan sintaks Vim biasanya digunakan untuk mengubah warna (atau beberapa atribut lain, seperti menggarisbawahi atau menambah tebal) teks, tetapi fitur penyembunyian malah memungkinkan item yang cocok disembunyikan seluruhnya, atau diganti dengan satu karakter .
Bergantung pada 'concealcursor'pengaturan Anda , teks asli akan ditampilkan secara penuh saat Anda menggerakkan kursor ke baris yang berisi item. The 'conceallevel'Pengaturan juga dapat digunakan untuk menonaktifkan conceal
seluruhnya, atau untuk mengubah apakah item yang tersembunyi atau diganti.
Untuk contoh spesifik Anda, vimwiki kemungkinan menggunakan concealendsargumen :syntax
untuk menyembunyikan *
di setiap ujung wilayah sintaks tebal.