从缓冲区获取当前状态行
get the current statusline from buffer
我有一个插件,它有一些功能可以向 statusline
添加一些字符串。我有一系列功能测试来验证某些操作是否会产生一些输出,并且想验证如果设置,statusline
会在某些触发后发生变化。
我没能找到能让我捕获(转储?)statusline
的渲染内容的东西。 :help statusline
和 :help status-line
都没有暗示任何可能允许这样做的事情。
有没有办法真正做到这一点?
您正在寻找 :help screenchar()
。使用它,您可以捕获由 Vim 控制的任何可见屏幕单元格(包括状态行),它的主要目的是测试。它的使用有点笨拙,因为你必须单独查询每个位置,并且必须显式转换回字符/字符串。例如,如果状态行是倒数第二行,这将得到它的第一个字符:
:echo nr2char(screenchar(&lines-1, 1))
这将获得整个状态线(假设您没有任何垂直 window 拆分):
:echo join(map(range(1, &columns), 'nr2char(screenchar(&lines-1, v:val))'), '')
我有一个插件,它有一些功能可以向 statusline
添加一些字符串。我有一系列功能测试来验证某些操作是否会产生一些输出,并且想验证如果设置,statusline
会在某些触发后发生变化。
我没能找到能让我捕获(转储?)statusline
的渲染内容的东西。 :help statusline
和 :help status-line
都没有暗示任何可能允许这样做的事情。
有没有办法真正做到这一点?
您正在寻找 :help screenchar()
。使用它,您可以捕获由 Vim 控制的任何可见屏幕单元格(包括状态行),它的主要目的是测试。它的使用有点笨拙,因为你必须单独查询每个位置,并且必须显式转换回字符/字符串。例如,如果状态行是倒数第二行,这将得到它的第一个字符:
:echo nr2char(screenchar(&lines-1, 1))
这将获得整个状态线(假设您没有任何垂直 window 拆分):
:echo join(map(range(1, &columns), 'nr2char(screenchar(&lines-1, v:val))'), '')