Tôi đã phát hiện ra một trường hợp thú vị trong cú pháp Vim làm nổi bật. Xem xét đoạn mã sau đây từ một công ty Makefile:Vim: Khởi động lại cú pháp cú pháp từ dòng tùy ý
LDSCRIPT := $(subst ",,$(CONFIG_SYS_LDSCRIPT))
Dòng trên chỉ đơn giản loại bỏ dấu ngoặc kép từ LDSCRIPT
. Không có gì sai về cú pháp; làm cho chạy như mong đợi và không có vấn đề.
Vấn đề
Kể từ khi dòng trên chỉ chứa một dấu nháy kép, các quy tắc làm nổi bật nhầm lẫn nghĩ rằng phần còn lại của cơ thể của Makefile được trích dẫn văn bản và màu sắc nó như vậy. Đối với Makefiles đơn giản, đây là một sự bất tiện; cho 1KLOC + Makefiles, điều này trở thành một rắc rối thực sự (đặc biệt là vì quá trình tiền xử lý này ở gần đầu tệp).
Các Câu hỏi
Có cách nào để một trong hai cú pháp disable tô sáng dựa trên dây chuyền phù hợp với một số biểu hiện thường xuyên nhất định (ví dụ. subst[ \t]*['"],.*
) hoặc một cái gì đó tương tự? Nếu không, có cách nào để khởi động lại điểm nổi bật của Vim tại một số dòng tùy ý trong khi vẫn giữ nguyên các điểm nổi bật ở trên không?
Nếu có thể, tôi muốn tránh chỉnh sửa Makefile vì tập lệnh này được chia sẻ trên một số phòng ban.
Tôi sẵn sàng viết/sửa đổi vimscript để đạt được điều này, tuy nhiên tôi đã không làm như vậy trước (đến bất kỳ mức độ hợp lý). Bất kỳ lời khuyên, con trỏ hoặc gợi ý hữu ích khác sẽ được nhiều đánh giá cao.
Những gì tôi đã thử
:syntax sync minlines=1
:syntax sync fromstart
:syntax sync clear
Không có ở trên dường như có bất kỳ tác dụng trên làm nổi bật khi chạy trong trình soạn thảo. Nhìn qua tài liệu trợ giúp Vim, có vẻ như :syn-sync-fourth
có thể làm được những gì tôi đang làm, tuy nhiên tôi không chắc chắn về cách thức hoạt động theo cách ngược lại (ví dụ: để tắt đánh dấu thay vì áp dụng nó).
Tìm kiếm được tìm kiếm và cuối cùng, bạn đã giúp tôi là ông chủ :) –