如何只為 Vim 的活動視窗設定背景顏色?

如何只為 Vim 的活動視窗設定背景顏色?

這是一個小但視覺上令人愉悅的功能,並且稍微增加了可用性,我想讓 Vim 對活動視窗使用不同的背景顏色。

這是我所追求的草圖:

在此輸入影像描述

通常,vim 的背景都是黑色的,但如果活動視窗有自己的顏色來突出使用者的注意力就好了。僅突出顯示狀態列是不夠的!

答案1

Heptite,謝謝你的主意。

我只是替換 WinEnter 和 WinLeave autocmd 以在每行前面新增/刪除行號:

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

現在可以更時尚地追蹤哪個視窗處於活動狀態。

答案2

控制預設背景顏色的突出顯示群組是“ Normal”和“ NonText”。不幸的是,這些是“全局”亮點,不能在每個視窗的基礎上“本地化”。

然而,這是一個真正醜陋、混亂的例子:

augroup BgHighlight
    autocmd!
    高亮 ActiveWindow guibg=淺藍色
    autocmd WinEnter * 呼叫 matchadd('ActiveWindow', '.*', 10, 1682)
    autocmd WinLeave * 呼叫 matchdelete(1682)
augroup END

doautocmd BgHighlight WinEnter -

由於這只是一個範例,因此您必須對其進行修改以滿足您的個人需求,例如添加 ctermbg=... 突出顯示以及 guibg=...

缺點是,這只會突出顯示文件中現有文字的背景,而不是整個行/視窗。 (就像我說的,醜陋且笨拙。)

答案3

我一直在尋找相同的東西,並發現(透過這個問題https://github.com/vim/vim/issues/2686)現在通過wincolorhttps://vimhelp.org/options.txt.html#%27wincolor%27)選項,可以在本地設定(setl),所以我將其添加到我的 vimrc 中。

" different color depending on focus
hi NormalNC ctermbg=234
augroup winbg
    autocmd!
    au WinEnter * setl wincolor=
    au WinLeave * setl wincolor=NormalNC
augroup END

這給了我這個結果(是的,我並不是在尋找很大的差異,但相信我,它改變了一切)。

在此輸入影像描述

答案4

添加@Tshirtman提供的解決方案,我剛剛修改了該自定義,並且在分割窗格之間切換時看起來非常好(只是共享相同的):

    hi NormalNC ctermbg=236 ctermfg=102
    augroup winbg
        autocmd!
        au WinEnter * setl wincolor= syn=on
        au WinLeave * setl wincolor=NormalNC syn=off
    augroup END

相關內容