如何根据当前缓冲区是否已修改来更改状态行的颜色?

How can I change the color of my statusline depending on whether the current buffer has been modified?

我是 Vim 的新手,我想根据缓冲区是否已修改为我的状态栏的一部分设置颜色。我的 .vimrc 中有以下内容:

set statusline=%{&modified=='nomodified'?'%#User1#':'%#User2#'}
" restore normal highlight
set statusline+=\ %*

在我的配色方案中,我有以下内容:

 hi User1 gui=NONE guifg=#000000 guibg=#FFFFFF
 hi User2 gui=NONE guifg=#000000 guibg=#FF0000

这只会在我的状态行中添加消息 %#User1# 和 %#User2#,具体取决于当前缓冲区是否已被修改;它不会改变状态栏的颜色。

有没有一种方法可以通过简单的 if/else 语句来更改状态栏的颜色,就像我上面描述的那样?

来自this gist of mine

highlight IsModified    ctermbg=red
highlight IsNotModified ctermbg=green
set statusline+=%#IsModified#%{&mod?'[THIS BUFFER IS MODIFIED!!!]':''}%*
set statusline+=%#IsNotModified#%{&mod?'':'[THIS BUFFER IS PRISTINE!!!]'}%*