2011-08-11 38 views
8

Tôi muốn tùy chỉnh tô sáng cú pháp trong Vim (phiên bản GUI). Có một tệp cú pháp hiện có cho ngôn ngữ của tôi. Tôi muốn thêm vào cú pháp đó làm nổi bật màu nền cho mỗi dòng nếu dòng đó bắt đầu bằng >. Tôi đã tìm ra rằng tôi về cơ bản có thể đạt được điều này bằng cáchVim cú pháp tùy chỉnh làm nổi bật nền chỉ

:syntax match Output /^>.*$/ 

và thêm

:hi Output guibg=LightBlue 

đến colourscheme. Nền của văn bản trong các dòng Output này có màu sau đó có màu xanh nhạt, nhưng nó cũng ghi đè màu nền trước. Vì vậy, hầu hết các cú pháp làm nổi bật biến mất. Làm thế nào tôi có thể giữ cho cú pháp nền trước nổi bật trong các dòng này?

Ngoài ra: Có cách nào để mở rộng làm nổi bật nền tới cuối (bên phải cuối màn hình) của các dòng này không?

+1

Đây là một câu hỏi hay. Tôi sợ câu trả lời có lẽ là không cho cả hai nhưng hy vọng ai đó sẽ chứng minh tôi sai. – Owen

Trả lời

0

Hãy thử điều này:

:hi Output guibg=LightBlue guifg=NONE 
+0

Tôi nhận được trong vim.gtk -g: "E254: Kann chết Farbe Không có nicht zuweisen". Dịch sang tiếng Anh: Không thể gán màu Không. – rembremading

+0

Cần có tất cả các nắp. Đã sửa. – bhinesley

+0

Cảm ơn, tôi chỉ thấy mình rằng lệnh không phàn nàn với NONE, nhưng tôi vẫn nhận được kết quả được mô tả ở trên. Lưu ý rằng tôi đặt lệnh đánh dấu vào đầu tệp colourscheme và nhập lệnh cú pháp trong trình chỉnh sửa. Có thể nó phụ thuộc vào thứ tự? – rembremading

3

Dưới đây là làm thế nào để bảo tồn cú pháp, tôi phù hợp với dòng bắt đầu bằng {

:hi Output guibg=LightBlue 
:match Output '\%>0v{.*' 

enter image description here

Edit: kể từ khi bạn muốn đối diện với bạn cần

:match Output '^[^<].*$' 

enter image description here

+0

Hoạt động (theo thứ tự ngược lại). Dòng đầu tiên có nhiều hơn một cụm từ thông dụng, chẳng hạn như của tôi không? Bất kỳ ý tưởng cho dù làm nổi bật toàn bộ dòng có thể được thực hiện với làm nổi bật cú pháp? – rembremading

+0

Tôi đang tìm kiếm nhưng không thể tìm thấy. Với các regex chúng ta kết hợp '^. * $' Do đó nó có ý nghĩa để làm nổi bật cho đến khi '\ r' char là, và không cho đến khi kích thước cửa sổ. Có lẽ có một cái gì đó liên quan đến ': set ve = all' nhưng không chắc chắn. –

+0

regex Tôi đang sử dụng các kết quả phù hợp '\%' mọi thứ '>' sau cột 0 0'', sau đó là '{.* 'để khớp nội dung bắt đầu bằng {. –

0

Cách dễ nhất để đạt được những gì bạn đang tìm kiếm là với lệnh :match như Eric Fortis đã chỉ ra.

Cách duy nhất tôi biết để đạt được điều này với làm nổi bật cú pháp sẽ yêu cầu bạn phải khớp toàn bộ dòng như bạn hiện đang làm. Sau đó, bạn sẽ cần xác định, sử dụng công cụ sửa đổi contains=..., các yếu tố cú pháp nào có thể nằm trong dòng của bạn. Tôi cũng khá chắc chắn các yếu tố này sẽ cần phải có thuộc tính contained được gán cho chúng. Bằng cách này, bất kỳ yếu tố nào được tìm thấy trong dòng của bạn, tức là phù hợp với .* sẽ giữ nguyên phần nổi bật của nó.

Xem :help :syn-contains để biết thêm.

Các vấn đề liên quan