首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检测缓冲区是否在statusline的非活动窗口中

检测缓冲区是否在statusline的非活动窗口中
EN

Stack Overflow用户
提问于 2020-01-14 00:44:35
回答 1查看 459关注 0票数 1

我的vimrc根据状态行是只读的还是已修改的,用不同的颜色背景设置状态行中的缓冲区编号。

如果缓冲区不在活动窗口中,我也想设置不同的颜色(在拆分窗口模式下很有用)。

我正在使用&mod&readonly来检测是否已修改或只读。如何检查缓冲区是否在活动窗口中?(即,如果窗口不活动,则可以将其更改为灰色)。

下面是我用来进行只读和修改的代码:

代码语言:javascript
运行
复制
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
EN

回答 1

Stack Overflow用户

发布于 2020-01-14 01:39:32

首先,通常情况下,在状态行中使用太多的颜色不是一个好主意。你最好使用自动设置的预定义StatusLine / StatusLineNC / %*

代码语言:javascript
运行
复制
set statusline+=%*%{StatusLineHeader()} "default header

但如果你真的想要它,你就需要:h g:actual_curwin。所以它变成了:

代码语言:javascript
运行
复制
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中添加的

票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59720723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档