如何根据当前缓冲区是否已修改来更改状态行的颜色?
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 语句来更改状态栏的颜色,就像我上面描述的那样?
highlight IsModified ctermbg=red
highlight IsNotModified ctermbg=green
set statusline+=%#IsModified#%{&mod?'[THIS BUFFER IS MODIFIED!!!]':''}%*
set statusline+=%#IsNotModified#%{&mod?'':'[THIS BUFFER IS PRISTINE!!!]'}%*
我是 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!!!]'}%*