如何始终以下面的状态显示VIM缓冲区而不是使用ls?

csbfibhn  于 2023-08-05  发布在  其他
关注(0)|答案(3)|浏览(174)

当我使用VIM和buffers时,要查看所有缓冲区的列表,我总是必须键入:ls来查看所有缓冲区。
有没有办法让缓冲区总是显示在vim的底部?
编辑:所以基本上让我们说我有2个文件在vimand中打开,如果我输入:ls,它将显示类似这样的内容
而不是键入,以查看我所有的文件打开,我想看到他们所有的时间,这样我就可以更快地在它们之间切换,而不是看到缓冲区列表第一。

f0brbegy

f0brbegy1#

我喜欢这个插件"vim-bufferline"
第一个好处是,一旦它发现命令行处于非活动/空闲状态约3秒,它就会显示在命令行的空的、未使用的空间上。一旦我们按下,它就会消失:(命令的开始)。
然后,它在命令行上显示Vim中打开的所有缓冲区的列表,并突出显示光标所在的活动缓冲区。

vfhzx4xs

vfhzx4xs2#

有插件可以做到这一点;例如minibufexpl.vim
实际上,这种需求听起来很奇怪。你知道像:buffer这样的命令也需要一个文件名,并且也会自动完成它吗?!默认情况下,GVIM有一个 Buffers 菜单。许多用户使用CtrlP、FuzzyFinder或Unite等插件来快速定位缓冲区和文件。

lyfkaqu1

lyfkaqu13#

Lua函数列出状态行中的缓冲区名称,突出显示活动的缓冲区名称:

vim.cmd('hi ActiveBuffer term=underline cterm=underline ctermfg=none ctermbg=none')   

function set_status(args)
       local buffs = {}
       local no_list_buffs = {['']=true, ['[Command Line]']=true}
       for _,v in pairs(vim.fn.getbufinfo({buflisted=1})) do
                local fname = vim.fn.fnamemodify(v.name, ":t")
                if(not no_list_buffs[fname]) then 
                    if(v.bufnr == args.buf) then
                        fname = '%#ActiveBuffer#'..fname..'%*'
                    end
                    table.insert(buffs, fname)
                end
        end
        vim.o.statusline = '%F%m %y%='..'<'..table.concat(buffs, ',')..'>'..' %c,%l/%L %P'
    end

字符串
要使用autocmd调用,请执行以下操作:

vim.api.nvim_create_autocmd({'BufEnter'},
 { 
            group = vim.api.nvim_create_augroup('BufStatusLine', {}), 
            callback = set_status 
 })

相关问题