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



我是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语句来改变雕像的颜色,就像我上面描述的那样?

根据我的要点:

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

最新更新