如何重复使用相同的Vim窗口/缓冲区进行命令输出,例如:help窗口?

Hen*_*k N 7 vim

虽然我不是Vim的专家,但我一直在努力研究一个粗略的Vim,相当于 TextMate的⌘R功能,从缓冲区运行Ruby代码并显示输出.

脚本当前只打开一个新窗口(拆分):new并将输出放在那里.如果多次运行它,它会打开多个窗口.理想情况下,我希望它在每个标签页中重复使用相同的窗口,就像:help它一样.

我看了,但还没有找到实现这个目标的方法.有什么指针吗?

Mat*_*iva 6

您可以使用名称创建临时缓冲区,以便在后续调用中可以检查该缓冲区是否已打开(如果已重用),或者您需要一个新缓冲区.像这样的东西:

function! Output()
    let winnr = bufwinnr('^_output$')
    if ( winnr >= 0 )
        execute winnr . 'wincmd w'
        execute 'normal ggdG'
    else
        new _output
        setlocal buftype=nofile bufhidden=wipe nobuflisted noswapfile nowrap
    endif
    silent! r! ls
endfunction
Run Code Online (Sandbox Code Playgroud)

  • 在创建一个新的缓冲区后,你应该保存它的数字:`let s:outputbufnr = bufnr('%')`然后用`if bufexists(s:outputbufnr).. else..endif`检查它. (2认同)