从缓冲区获取当前状态行

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))'), '')