如何在Vim中获取整个屏幕的内容?

时间:2013-05-11 06:08:13

标签: vim screen

我需要在Vim中获得一个屏幕副本。不是缓冲区,窗口,标签,而是整个屏幕,即如果终端大小是80x25,那么我需要一个2000个字符的字符串。颜色并不重要(但是,如果有可能的话,我也很乐意拥有这些数据)。便携式解决方案(即仅限vimscript,或者可能是一些python技巧)是受欢迎的。

2 个答案:

答案 0 :(得分:1)

ScreenShot plugin允许您将当前Vim视图(所有窗口拆分,状态行等,包括语法突出显示)的副本复制为HTML文件。

您可以“降级”实现以生成简单文本,或将生成的HTML后处理为文本。

答案 1 :(得分:0)

我不确定这是不是你想要的,而且我不确定一旦你拥有它你想用它做什么。

但这是一个函数,它返回字符串列表中每个窗口的可见文本。它使用w0w$行标记来提取可见范围,将范围拉到注册a,并将寄存器转储到返回的列表中。 (最后保存并恢复现有的寄存器。)

function! WindowStrings()
    let areg = getreg('a')
    let atype = getregtype('a')
    let strings = []
    windo exe ':' . line("w0") . ',' . line("w$") . 'yank a' |
        \ call add(strings,getreg('a'))
    call setreg('a',areg,atype)
    return strings
endfunction