如何从vim的python api中列出或不列出vim缓冲区?

时间:2009-03-15 22:03:57

标签: python vim

对于一个工具我需要计算仍然列出的所有vim缓冲区(有列出和未列出的缓冲区)

遗憾的是vim.buffers包含所有缓冲区,如果列出或不列出缓冲区,似乎没有一个属性可供参考

我想做的vim命令是

:buffers

不幸的是,使用vim python api可能会模仿

:buffers!

但没有列出/未列出的元数据,我们需要

2 个答案:

答案 0 :(得分:6)

以下是使用Vim语言管理此方法的方法。

function s:buffers_list()
    let result = []

    for buffer_number in range(1, bufnr('$'))
        if !buflisted(buffer_number)
            continue
        endif

        call add(result, buffer_number)
    endfor

    return result
endfunction

答案 1 :(得分:3)

使用Vim的python api:

listedBufs = []
for b in vim.buffers:
    listed = vim.eval('buflisted(bufnr("%s"))' % b.name)
    if int(listed) > 0:
        listedBufs.append(b)

或者如果你不介意牺牲一些可读性:

listedBufs = [b for b in vim.buffers
              if int(vim.eval('buflisted(bufnr("%s"))' % b.name)) > 0]