Tôi muốn có một màn hình đẹp và ngọt ngào của khoảng trắng kéo dài trong thiết bị đầu cuối của tôi. Điều này sẽ cho phép tôi loại bỏ chúng trước khi đóng tệp.
Tôi biết rằng câu hỏi này khá phổ biến và tôi đã tìm thấy hàng tá câu trả lời trên SO. Thật không may, tôi chưa tìm thấy một thỏa mãn nào ...
Vì vậy, tôi sẽ cố gắng tóm tắt các thông tin thu thập được và các giải pháp tôi tìm thấy.
Giải pháp 1: Làm nổi bật các không gian dấu bằng tay
highlight ExtraWhitespace ctermbg=red guibg=red
match ExtraWhitespace /\s\+$/
autocmd BufWinEnter * match ExtraWhitespace /\s\+$/
autocmd InsertEnter * match ExtraWhitespace /\s\+\%#\@<!$/
autocmd InsertLeave * match ExtraWhitespace /\s\+$/
autocmd BufWinLeave * call clearmatches()
Ưu điểm:
- Dễ sử dụng
- Nhanh
- Tương thích với
cursorline
Nhược điểm:
- Màu được chọn không tương thích với các bảng màu khác vì màu được đặt thủ công thành
red
- Khối nền lớn màu đỏ không thẩm mỹ
Giải pháp 2: Sử dụng tính năng danh sách
set list
set listchars+=trail:◦
Ưu điểm:
- Dễ sử dụng
- Nhanh
Nhược điểm:
- Vấn đề nếu
:set cursorline
được kích hoạt - Màu chuyên dụng cho
list/trail
không thể cấu hình. Phải giống như các bảng liệt kê khác
Giải pháp 3: Sử dụng tính năng che giấu
syn match WhiteSpace "\s\+$" containedin=ALL conceal cchar=◦
set conceallevel=2
set concealcursor=nv
highlight Conceal ctermfg=red
Ưu điểm:
- Đẹp hơn giải pháp đầu tiên
Nhược điểm:
- Nền không giống với nền con trỏ
- Có thể can thiệp vào các quy tắc che giấu khác
- Màu sắc được chọn không phải lúc nào cũng tương thích với bảng màu
- Không tương thích với phiên bản cũ hơn của Vim
Câu hỏi của tôi
Mà một trong những giải pháp được liệt kê là phù hợp nhất về hiệu suất và khả năng tương thích và làm thế nào tôi có thể nhận được tất cả các ưu và không có nhược điểm nào?
Nói cách khác, tôi muốn tìm một giải pháp trong đó:
- Màu sắc nổi bật phù hợp với màu sắc đã chọn
- Màu này có thể nhìn thấy rõ nhưng không quá hung dữ đối với mắt
- Tương thích với
cursorline
(nền và tiền cảnh) `- Tương thích với các plugin khác có thể sử dụng che giấu
- Char trailing có thể được đặt thành bất kỳ char Unicode nào
:hi link ExtraWhitespace CursorLine
. Xem:help hi-link
.