Trường hợp làm nổi bật quy tắc thuộc về?


11

Thỉnh thoảng tôi muốn ghi đè cú pháp mặc định làm nổi bật màu sắc và kiểu với các tùy chọn của riêng tôi.

Tôi tưởng tượng cách thích hợp nhất để làm điều này là tạo ra bảng màu của riêng tôi. Tuy nhiên tôi có một vài câu hỏi.

  1. Nếu tôi muốn đặt phần tô sáng cho một nhóm cú pháp cụ thể bằng một ngôn ngữ cụ thể, thì điều này có thuộc về màu sắc của tôi không, hay sẽ tốt hơn nếu đặt nó vào after/syntax/[filetype].vim?

    highlight jsAssignExpIdent cterm=bold gui=bold
    

    Có vẻ hơi kỳ quặc khi đặt các quy tắc cụ thể của ngôn ngữ tối nghĩa trong bảng màu, vì chúng sẽ được tải bất kỳ ngôn ngữ nào tôi đang làm việc, nhưng dường như còn tệ hơn khi đặt các quy tắc tô sáng trong tệp cú pháp.

  2. Đôi khi tôi tạo quy tắc cú pháp mới cho một ngôn ngữ cụ thể, trong after/syntax/[filetype].vim. Trong trường hợp người dùng khác muốn sử dụng các tiện ích mở rộng này, tôi có nên cung cấp quy tắc tô sáng mặc định ở đó liên kết đến các nhóm đánh dấu mặc định phổ biến không? Nếu người dùng khác muốn ghi đè màu tô sáng đó, họ nên làm thế nào?

    ::::: after/syntax/asm.vim :::::
    
    syn match asmHexNumber /\(0x\|\$\)[0-9A-Fa-f]\+/
    highlight default link asmHexNumber Number
    

Câu trả lời:


9

Câu hỏi đầu tiên

Định nghĩa nổi bật thuộc về màu sắc của bạn. Thực tế là chúng được tải cho mọi bộ đệm, bất kể ngôn ngữ của chúng là gì, không nên là một vấn đề.

Nếu bạn không muốn chỉnh sửa màu sắc của mình, bạn có thể đặt các định nghĩa nổi bật đó vào plugin/myhighlights.vim:

function! MyHighlights()
    highlight ...
    highlight ...
endfunction

augroup MyHighlights
    autocmd!
    autocmd ColorScheme * call MyHighlights()
augroup END

Câu hỏi thứ hai

Mẫu của bạn chính xác là cách bạn nên làm và cách mọi kịch bản cú pháp thực hiện. Phương pháp này cho phép nhà phát triển plugin xác định mặc định lành mạnh mà không buộc các màu cụ thể xuống cổ họng người dùng của họ.


Cám ơn vì đã xác nhận. Nhưng tôi lo ngại nếu tôi đặt highlight link ...các lệnh trong một tệp cú pháp thì các lệnh này sẽ ghi đè lên các cài đặt từ colorcheme mỗi khi một tệp có kiểu tệp đó được tải. Có lẽ tôi chỉ nên làm highlight link ...sau khi kiểm tra rằng không có quy tắc nổi bật nào tồn tại cho tên đó?
joeytwiddle

À, tôi không cần lo lắng. Tài liệu Vim nói: Nếu đã có cài đặt tô sáng cho {từ nhóm}, liên kết sẽ không được thực hiện, trừ khi '!' được đưa ra. Đối với lệnh ": highlight link" trong tệp có nguồn gốc, bạn không nhận được thông báo lỗi. Điều này có thể được sử dụng để bỏ qua các liên kết cho các nhóm đã có cài đặt.
joeytwiddle

Nhưng đối với những người điều chỉnh màu sắc của họ, một highlight linktrong bảng màu có thể được ghi đè lên sau bởi một highlight linktệp cú pháp. Để tránh điều này, các đối số thực tế (ctermbg, guifg, ...) có thể được sử dụng thay vì liên kết.
joeytwiddle

Người dùng nên có từ cuối cùng về màu sắc nào được sử dụng cho một nhóm nổi bật nhất định. Để đạt được hiệu quả đó, không có gì lạ khi thấy các định nghĩa nổi bật dành riêng cho ngôn ngữ trong bảng màu. Bạn chỉ nên sử dụng highlight link ...trong tập lệnh cú pháp của mình và để người dùng ghi đè lên tập lệnh nếu họ muốn.
romainl

Mối quan tâm của tôi là nếu người dùng sử dụng highlight link ...trong colorcheme của họ, thì tệp cú pháp có thể thiết lập lại nó sau này với chính nó highlight link .... Bây giờ tôi thấy rằng các tệp cú pháp tốt tránh điều này bằng cách sử dụng highlight default link .... Đó có lẽ là một sự điều chỉnh cho asmHexNumberquy tắc trong câu hỏi của tôi.
joeytwiddle
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.