Vim sözdizimi vurgulamasında ilginç bir kenar durumu keşfettim. Bir şirket Makefile'dan aşağıdaki pasajı düşünün:Vim: Sözdizimini Yeniden Başlat Arbitrary Line'dan Vurgulama
LDSCRIPT := $(subst ",,$(CONFIG_SYS_LDSCRIPT))
yukarıdaki satır sadece belirli bir LDSCRIPT
gelen çift tırnak kaldırır. Sözdizimsel olarak yanlış bir şey yok; make beklendiği gibi ve sorunsuz çalışır.
Sorun
Yukarıdaki satır tek çift tırnak içerdiğinden vurgulama kuralları yanlışlıkla Makefile vücudun geri kalanı böyle gibi metin ve renkleri alıntı olduğunu düşünüyorum. Basit Makefiller için bu bir rahatsızlıktır; 1KLOC + Makefiles için, bu gerçek bir güçlük haline gelir (özellikle bu ön işlem dosyanın üst kısmına yakın olduğu için).
Soru
ya devre dışı sözdizimi bazı verilen düzenli ifadeyi (örn. subst[ \t]*['"],.*
) ya da benzer bir şey eşleşen hatlar dayalı vurgulayarak için herhangi bir yolu var mı? Başarısız olan, Vim'in yukarıda belirtilenleri koruyarak bazı keyfi satırlarda vurgulamayı yeniden başlatmanın bir yolu var mı?
Mümkünse Makefile'de yapılan düzenlemelerden kaçınmak isterim, çünkü bu betik birkaç bölüm boyunca paylaşılmaktadır.
Bunu başarmak için vimscript yazmayı/değiştirmeyi tercih ediyorum, ancak bunu daha önce yapmadım (herhangi bir makul dereceye kadar). Herhangi bir ipucu, işaretçi veya diğer yararlı ipuçları çok takdir edilecektir. Ben yukarıda
:syntax sync minlines=1
:syntax sync fromstart
:syntax sync clear
Hiçbiri çalıştı gelmiş ne
düzenleyicisinde çalıştırdığınızda vurgulama üzerinde herhangi bir etkisi var gibi gözüküyor. Vim yardım belgelerine baktığımızda, :syn-sync-fourth
'un sonra ne yaptığımı yapabileceği görünüyor, ancak bunun ters bir şekilde nasıl işleyeceğinden emin değilim (örneğin, uygulamak yerine vurgulamayı devre dışı bırakmak).
Aranıyor ve son olarak, sen bana yardım ettin patron :) –