Ghi đè màu nền của con trỏ bằng cách tô sáng cú pháp


7

Tôi đã đặt màu nền của dòng hiện tại thành màu xám nhạt như thế này:

hi CursorLine cterm=NONE ctermbg=253

(Lưu ý rằng bảng màu của tôi là đen trắng.)

Tuy nhiên, bằng cách này, bất kỳ màu nền nào được đặt bằng tô sáng cú pháp đều bị ghi đè bởi điều này, tức là nếu một từ trên dòng hiện tại được tô sáng, giả sử, màu trắng trên đỏ, tôi thấy văn bản có màu trắng xám. Tôi chỉ thấy rằng dòng (hoặc một phần của nó) được cho là được tô sáng màu đỏ nếu tôi di chuyển con trỏ sang dòng khác.

Điều tôi muốn là chỉ một phần của dòng hiện tại không có màu nền đặc biệt nào được đặt được tô sáng màu xám bằng con trỏ, nhưng phần tô sáng con trỏ bị ghi đè bằng cách tô sáng cú pháp.

Điều này có thể không?

PS: Trường hợp cụ thể mà tôi gặp phải vấn đề này là dòng thứ hai trong tệp gmp commit tmp, trong đó văn bản trên dòng thứ hai có màu trắng (vì bất kỳ lý do gì).


Lý do "bất cứ điều gì" là bạn phải để trống dòng thứ hai của cam kết git của bạn. Đó là kiểu được ưa thích với các cam kết git: 1 dòng ngắn (~ 60 ký tự) mô tả cam kết, theo sau là một dòng trống, theo sau là một lời giải thích lớn như bạn muốn / có thể.
Shahbaz

@Shahbaz: Ok cảm ơn vì lời giải thích, điều đó sẽ xóa mọi thứ. Cho đến nay tôi chỉ sử dụng git cho một số thứ riêng tư nhưng chưa bao giờ thực sự học nó (tức là đọc hướng dẫn hoặc hơn thế), vì vậy tôi chưa nhận thức được những điều như vậy. Tuy nhiên, đọc sách git nằm trong danh sách TODO của tôi, trước khi bắt đầu sử dụng git rộng rãi hơn.
flotzilla

Git là tuyệt vời và có thể làm những điều ngoài sức tưởng tượng của bạn, nhưng rất đơn giản để sử dụng hàng ngày. Chúc bạn học tập vui vẻ!
Shahbaz

Câu trả lời:


5

Tôi đã từng đề nghị một sự thay đổi trong danh sách gửi thư của vim_dev , nhưng Bram đã chống lại nó, với lý do sau:

Có màu nền cú pháp ghi đè màu nền của 'con trỏ' sẽ dẫn đến việc con trỏ bị phá vỡ thành từng mảnh hoặc khó có thể xem được.

Thay thế

Với matchadd()chức năng, bạn có thể chỉ định một {priority}xác định xem phần tô sáng sẽ ở phía trước hay phía sau đường con trỏ. Thật không may, điều này là hoàn toàn khác với đánh dấu cú pháp, và thậm chí phạm vi khác nhau. Do đó, nó không giúp ích gì cho các vấn đề cú pháp, nhưng cho phép sử dụng khác, ví dụ: tô sáng bằng plugin Mark của tôi .

Giải pháp thay thế

Bạn có thể giữ màu nền cú pháp nếu bạn sử dụng reversethuộc tính. Ví dụ, thay vì xác định

:hi Todo guifg=Black guibg=Yellow

làm cái này:

:hi Todo guifg=Yellow guibg=Black gui=reverse

Thật không may, bây giờ bạn có một vấn đề khác: Màu văn bản (tiền cảnh) thay đổi từ màu đen sang màu con trỏ. Điều này hoạt động tốt đối với lỗi trắng trên đỏ làm nổi bật bạn đề cập (chuyển sang (sáng) -coderline-on-red), nhưng ít tốt hơn cho Todoví dụ của tôi (con trỏ trên màu vàng). Ngoài ra, reversethuộc tính không được hỗ trợ trong tất cả các thiết bị đầu cuối.

Tóm lược

Thật không may, không có sửa chữa dễ dàng. Mặc dù có những thiếu sót, tôi sử dụng cách giải quyết ở trên (kudos to @romainl, trong cấu hình đầu tiên tôi thấy điều này!)


Cảm ơn câu trả lời của bạn. Nhưng tôi có hiểu chính xác rằng các giải pháp / giải pháp được đề xuất của bạn là thay đổi các tệp cú pháp (nghĩa là để xác định rằng một tô sáng cụ thể nên được ưu tiên so với tô sáng đường màu)? Nếu vậy, đó không phải là điều tôi đang tìm kiếm, điều tôi muốn chỉ định là để tô sáng đường màu được đặt phía sau bất kỳ tô sáng cú pháp nào. Trong trường hợp đó, tôi sẽ phải chấp nhận cách nó hoạt động, tức là việc tô sáng cú pháp luôn bị ghi đè bởi tô sáng đường màu.
flotzilla

Các tệp cú pháp thường không xác định màu sắc, chúng chỉ :hi linkcho các nhóm hiện có (như Todo). Cách giải quyết của tôi sẽ giúp bạn thay đổi màu sắc cá nhân, trực tiếp hoặc trong của bạn .vimrc.
Ingo Karkat

Ok vâng chắc chắn, lúc thứ hai nghĩ đó ít nhiều là những gì tôi muốn nói. Tuy nhiên, tôi phải thay đổi hành vi của các tô sáng cụ thể để ghi đè lên con trỏ, thay vì thay đổi hành vi của con trỏ bị ghi đè bởi bất kỳ tô sáng nào (dường như không thể). Vì vậy, bây giờ tôi sẽ (phải) chấp nhận số phận, nhưng cách giải quyết của bạn có thể có ích nếu có một vài điểm nổi bật cụ thể thường làm tôi khó chịu và sau đó tôi có thể sửa chữa một cách chọn lọc.
flotzilla
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.