首页 > 解决方案 > 获取所有 vim 缓冲区,同时将我的窗口/缓冲区保持在同一个地方?

问题描述

基本上,我想在处理 vim 脚本时不退出 vim 来获取我所有的 vim 文件。我明白我能做到so ~/somefile.vim。我的代码有效,但它总是让我处于不同的窗口和缓冲区。

这是我到目前为止所拥有的:

在 vimrc 中

map <leader>r  :call Reload()<cr>

在函数.vim

if !exists("*Reload")

    fu! Reload()

    fu! Refresh()
    if &ft == 'vim'| silent so % | endif
    endfu

    messages clear 
    :bufdo call Refresh()
    source ~/.vimrc
    :wa
    :noh

    endfu

endif

我尝试在开始时设置当前缓冲区,然后尝试稍后恢复当前缓冲区,但它不起作用,因为我认为采购是异步发生的?

let s:buf_now = bufnr()
execute "normal! :b" . s:buf_now

解决方法可能是创建一个函数,用缓冲区和窗口 ids 函数恢复我的窗口?添加mksession?scriptease ```运行时` ? 不确定最好的方法是什么。

标签: vim

解决方案


根据菲尔布兰登的回答:

if !exists("*ReloadVimBuffers")
function! ReloadVimBuffers()
    wa
    noh
    messages clear
    for i in range(1, bufnr('$'))
        let fname = bufname(i)
        if fname =~# '^.*\.vim'
            silent execute 'source ' . fname
        endif
    endfor
endfunction
endif


推荐阅读