
這是一個小但視覺上令人愉悅的功能,並且稍微增加了可用性,我想讓 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)現在通過wincolor
(https://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