讓vim中的活動視窗更明顯

讓vim中的活動視窗更明顯

我的工作空間通常是一個非常大的 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

答案4

您可以將其新增至您的 中~/.vimrc,這將使非活動視窗的狀態列具有深灰色背景,以區別於活動視窗的白色狀態列。

highlight StatusLineNC cterm=bold ctermfg=white ctermbg=darkgray

請參閱此螢幕截圖範例。中間視窗處於活動狀態(白色狀態列)。左右視窗處於非活動狀態(深灰色狀態列)。

在此輸入影像描述

相關內容