ฉันต้องการที่จะมีการแสดงที่ดีและหวานของพื้นที่สีขาวต่อท้ายในกลุ่ม terminal ของฉัน นี่จะอนุญาตให้ฉันลบออกก่อนที่จะปิดไฟล์
ฉันรู้ว่าคำถามนี้ค่อนข้างเป็นที่นิยมและฉันได้พบคำตอบมากมายใน SO แล้ว น่าเสียดายที่ฉันยังไม่พบที่น่าพอใจ ...
ดังนั้นฉันจะพยายามสรุปข้อมูลที่รวบรวมและวิธีแก้ปัญหาที่พบ
โซลูชันที่ 1: เน้นช่องว่างต่อท้ายด้วยตนเอง
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()
ข้อดี:
- ง่ายต่อการใช้
- รวดเร็ว
- เข้ากันได้กับ
cursorline
จุดด้อย:
- สีที่เลือกไม่สามารถใช้ร่วมกับโทนสีอื่นได้เนื่องจากตั้งค่าสีด้วยตนเอง
red
- บล็อกพื้นหลังสีแดงขนาดใหญ่ไม่สวยงามมากนัก
โซลูชันที่ 2: การใช้คุณลักษณะรายการ
set list
set listchars+=trail:◦
ข้อดี:
- ง่ายต่อการใช้
- รวดเร็ว
จุดด้อย:
- ปัญหาถ้า
:set cursorline
เปิดใช้งาน list/trail
ไม่สามารถกำหนดค่าสีเฉพาะสำหรับ จะต้องเหมือนกับรายการอื่น ๆ
โซลูชันที่ 3: การใช้คุณลักษณะการปกปิด
syn match WhiteSpace "\s\+$" containedin=ALL conceal cchar=◦
set conceallevel=2
set concealcursor=nv
highlight Conceal ctermfg=red
ข้อดี:
- สวยกว่าทางออกแรก
จุดด้อย:
- พื้นหลังไม่เหมือนกับพื้นหลังของเคอร์เซอร์
- อาจรบกวนกฎการปกปิดอื่น ๆ
- สีที่เลือกไม่สามารถใช้ร่วมกับโทนสีได้เสมอไป
- เข้ากันไม่ได้กับ Vim รุ่นเก่ากว่า
คำถามของฉัน
ตัวเลือกใดที่เหมาะสมที่สุดในแง่ของประสิทธิภาพและความเข้ากันได้และฉันจะได้รับข้อดีและข้อเสียทั้งหมดได้อย่างไร
ในคำอื่น ๆ ฉันต้องการหาวิธีแก้ปัญหาที่:
- สีที่ต่อท้ายไฮไลต์เห็นด้วยกับสีที่เลือก
- สีนี้สามารถมองเห็นได้ชัดเจน แต่ไม่รุนแรงเกินไปกับดวงตา
- เข้ากันได้กับ
cursorline
(พื้นหลังและเบื้องหน้า) `- เข้ากันได้กับปลั๊กอินอื่น ๆ ที่อาจใช้ปกปิด
- ถ่านต่อท้ายสามารถตั้งค่าเป็น Unicode ถ่านใด ๆ
:hi link ExtraWhitespace CursorLine
ถ้าคุณต้องการสีที่เข้ากันได้กับโทนสีที่แตกต่างกันแล้วเชื่อมโยงไปยังชื่อกลุ่มสีแทนการใช้สีโดยเฉพาะอย่างยิ่งเช่น:help hi-link
ดู