我的vimrc根据状态行是只读的还是已修改的,用不同的颜色背景设置状态行中的缓冲区编号。
如果缓冲区不在活动窗口中,我也想设置不同的颜色(在拆分窗口模式下很有用)。
我正在使用&mod和&readonly来检测是否已修改或只读。如何检查缓冲区是否在活动窗口中?(即,如果窗口不活动,则可以将其更改为灰色)。
下面是我用来进行只读和修改的代码:
function! StatusLineHeader()
return ' '.bufnr('%').' '
endfunction
set statusline=
set statusline+=%#UWhiteOnBlue#%{&mod?'':&readonly?'':StatusLineHeader()} "default header
set statusline+=%#UWhiteOnOrange#%{&mod?'':&readonly?StatusLineHeader():''} "readonly header
set statusline+=%#UWhiteOnGreen#%{&mod?StatusLineHeader():''} "modified header发布于 2020-01-14 01:39:32
首先,通常情况下,在状态行中使用太多的颜色不是一个好主意。你最好使用自动设置的预定义StatusLine / StatusLineNC / %*。
set statusline+=%*%{StatusLineHeader()} "default header但如果你真的想要它,你就需要:h g:actual_curwin。所以它变成了:
set statusline+=%#StatusLine#%{g:actual_curwin==win_getid()?StatusLineHeader():''}
set statusline+=%#StatusLineNC#%{g:actual_curwin!=win_getid()?StatusLineHeader():''}注意:g:actual_curwin是在Vim 8.1.1372中添加的
https://stackoverflow.com/questions/59720723
复制相似问题