从缓冲区获取当前状态行

时间:2018-10-06 17:18:24

标签: vim vim-plugin

我有一个具有某些功能的插件,该插件向statusline添加了一些字符串。我进行了一系列功能测试,以验证某些操作会产生一些输出,并希望验证statusline(如果已设置)在触发后会发生变化。

我找不到能使我捕获(转储?)statusline渲染内容的内容。 :help statusline:help status-line均未暗示可能允许这样做的任何内容。

有没有一种实际的方法?

1 个答案:

答案 0 :(得分:1)

您正在寻找:help screenchar()。有了它,您可以捕获Vim控制的任何可见屏幕单元(包括状态行),其主要目的是测试。它的用法有点笨拙,因为您必须单独查询每个位置,并且必须显式转换回字符/字符串。例如,如果状态行是倒数第二行,则会获得第一个字符:

:echo nr2char(screenchar(&lines-1, 1))

这将获得整个状态行(假设您没有任何垂直窗口分割):

:echo join(map(range(1, &columns), 'nr2char(screenchar(&lines-1, v:val))'), '')