我的工作空間通常是一個非常大的 xterm 和 vim,分成六個或更多緩衝區。如果能更明顯地看出哪一個是活動緩衝區,那將會非常有幫助。現在我正在使用行號來實現這一點:
augroup BgHighlight
autocmd!
autocmd WinEnter * set number
autocmd WinLeave * set nonumber
augroup END
但這意味著當我更改緩衝區時,我的程式碼會向左或向右跳轉,這很煩人。另外,我希望能夠看到哪一條是第 94 行,即使在不活躍的緩衝。那麼有沒有辦法改變活動緩衝區中行號的顏色呢?
答案1
按照您的模板,您可以改變不同的屬性,例如 colorcolumn:
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
這一切都取決於您的使用情況以及您願意忍受的程度。
答案2
狀態列的顏色是了解哪個視窗處於活動狀態的最常用方法。它在您的顏色方案中用這兩行定義:
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
第一個用於當前窗口,第二個用於“非當前”窗口。
這是摘錄自索里亞256,您應該根據您的配色方案調整顏色。
但你可以嘗試類似的方法(注意,第二行的顏色是完全隨機的):
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
答案3
另請參閱我的使非活動視窗變暗的插件:https://github.com/blueyed/vim-diminactive