ทำให้หน้าต่างที่ใช้งานเป็นกลุ่มชัดเจนขึ้น


22

พื้นที่ทำงานของฉันเป็นปกติหนึ่ง xterm ที่ใหญ่มากพร้อมเสียงเรียกเข้าแบ่งออกเป็นหกหรือมากกว่าบัฟเฟอร์ มันจะมีประโยชน์จริง ๆ ถ้ามันชัดเจนว่าอันไหนคือบัฟเฟอร์ที่ใช้งานอยู่ ตอนนี้ฉันกำลังใช้การปรากฏตัวของหมายเลขบรรทัดสำหรับสิ่งนี้:

augroup BgHighlight
    autocmd!
    autocmd WinEnter * set number
    autocmd WinLeave * set nonumber
augroup END

แต่นี่หมายความว่าเมื่อฉันเปลี่ยนบัฟเฟอร์รหัสของฉันกระโดดไปทางซ้ายหรือขวาซึ่งน่ารำคาญ ยิ่งไปกว่านั้นฉันต้องการที่จะเห็นว่าอะไรคือบรรทัด 94 แม้จะอยู่ในบัฟเฟอร์ที่ไม่ได้ใช้งาน ดังนั้นจะมีวิธีใดในการเปลี่ยนสีของหมายเลขบรรทัดในบัฟเฟอร์ที่ใช้งานอยู่?

คำตอบ:


26

การติดตามเทมเพลตของคุณคุณสามารถเปลี่ยนแปลงคุณสมบัติที่แตกต่างกันเช่นสีคอลัมน์:

augroup BgHighlight
    autocmd!
    autocmd WinEnter * set colorcolumn=80
    autocmd WinLeave * set colorcolumn=0
augroup END

นี่จะเป็นคอลัมน์สี 80 ในหน้าต่างปัจจุบันของคุณในขณะที่ปิดใช้งานในหน้าต่างอื่น มันสั่นสะเทือนน้อยกว่าการตั้งค่า / ไม่ตั้งค่าหมายเลขบรรทัด

ตัวเลือกที่น่ารำคาญยิ่งกว่านั้นคือถ้าคุณใช้ไฮไลต์บรรทัดปัจจุบัน (ตั้งค่า cul) ให้ทำดังนี้:

augroup BgHighlight
    autocmd!
    autocmd WinEnter * set cul
    autocmd WinLeave * set nocul
augroup END

ทุกอย่างมาจากการใช้งานของคุณและสิ่งที่คุณยินดีที่จะทน


11

สีของสถานะเป็นวิธีปกติที่จะรู้ว่าหน้าต่างใดเปิดใช้งานอยู่ มันถูกกำหนดใน colorcheme ของคุณด้วยสองบรรทัดนี้:

hi StatusLine   ctermfg=15  guifg=#ffffff ctermbg=239 guibg=#4e4e4e cterm=bold gui=bold
hi StatusLineNC ctermfg=249 guifg=#b2b2b2 ctermbg=237 guibg=#3a3a3a cterm=none gui=none

ครั้งแรกสำหรับหน้าต่างปัจจุบันที่สองสำหรับหน้าต่าง "ไม่หมุนเวียน"

นี่เป็นข้อความที่ตัดตอนมาจากxoria256คุณควรปรับสีให้เข้ากับสีของคุณ

แต่คุณสามารถลองแบบนี้ได้ (ระวังสีในบรรทัดที่สองนั้นจะสุ่มโดยสมบูรณ์):

augroup NrHighlight
  autocmd!
  autocmd WinEnter * hi LineNr ctermfg=247 guifg=#9e9e9e ctermbg=233 guibg=#121212
  autocmd WinLeave * hi LineNr ctermfg=274 guifg=#e9e9e9 ctermbg=133 guibg=#212121
augroup END

ฉันได้ลองเปลี่ยนการเน้น LineNr บน WinEnter / WinLeave แล้ว แต่ปรากฏว่าการระบายสี LineNr นั้นเป็นสากล
DrHyde

ใช่และฉันต้องรอความคิดเห็นของคุณเพื่อจำไว้ ดังนั้นไม่ถ้า LineNr เป็นโกลบอลจะเห็นได้ชัดว่าไม่มีวิธีการเปลี่ยนในหน้าต่างที่ระบุ คุณไม่คิดว่าสถานะนั้นเพียงพอหรือไม่
romainl

ฉันสงสัยว่าอาจมี LineNr เวอร์ชันต่อหน้าต่างอื่นหรือไม่ และไม่ฉันไม่คิดว่าบรรทัดสถานะเพียงพอ มันช่วยได้ แต่ฉันต้องการมากกว่านี้ ปัญหาหนึ่งในการใช้บรรทัดสถานะคือการมีตัวบ่งชี้หน้าต่างที่ใช้งานอยู่ที่ด้านล่างของหน้าต่างเป็นสิ่งที่ตรงกันข้ามกับสิ่งที่เรามีทุกที่อื่น - แถบชื่อที่ด้านบนของหน้าต่างที่เปลี่ยนสี - ดังนั้นจึงมีสักครู่ หยุดคิดก่อนว่า "อ๋อใช่เสียงเรียกเข้าก็เป็นไปในทางตรงกันข้าม" ในขณะที่หมายเลขบรรทัดอยู่เสมอในทุกการประยุกต์ใช้ในสถานที่เดียวกัน
DrHyde

ฉันชอบมันมากถ้าคุณสามารถเปลี่ยนสีพื้นหลังของหน้าต่างได้ แต่ดูเหมือนว่าจากด้านบนจะเป็นไปไม่ได้
Jonathan Hartley

การใช้hi StatusLine...และใช้hi StatusLineNC...งานได้อย่างมีเสน่ห์!
Luc M


2

นี่คือสิ่งที่ฉันทำ:

augroup BgHighlight
    autocmd!
    autocmd WinEnter * set relativenumber
    autocmd WinLeave * set norelativenumber
augroup END

ตัวเลขสัมพัทธ์เป็นเพียงตัวช่วยสำหรับการคำนวณจำนวนคำสั่งซ้ำไม่มีประโยชน์สำหรับพวกมันในหน้าต่างที่คุณไม่ได้ทำการแก้ไข



1

คุณสามารถเพิ่มสิ่งนี้ลง~/.vimrcในซึ่งจะทำให้แถบสถานะของหน้าต่างที่ไม่ได้ใช้งานมีพื้นหลังสีเทาเข้มเพื่อแยกความแตกต่างจากแถบสถานะสีขาวของหน้าต่างที่ใช้งานอยู่

highlight StatusLineNC cterm=bold ctermfg=white ctermbg=darkgray

ดูตัวอย่างภาพหน้าจอนี้ หน้าต่างกลางเปิดใช้งาน (แถบสถานะสีขาว) หน้าต่างซ้ายและขวาไม่ทำงาน (แถบสถานะสีเทาเข้ม)

ป้อนคำอธิบายรูปภาพที่นี่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.