vim识别窗口

时间:2011-08-08 11:03:11

标签: function vim window

我有一个函数可以打开一个包含脚本结果的新窗口

function! MyFunc()
    bo new
    se buftype=nofile
    silent! exec "r! sh MyScript.sh "
endfunction

我想识别这个特定的窗口,以便我可以多次调用我的函数并每次使用相同的窗口而不是打开一个新窗口。

类似

if exists(myWindow) 
    use myWindow
else
    bo new
endif

1 个答案:

答案 0 :(得分:2)

好的我认为这可能有用......但是......小心谨慎,因为我不是Vim专家。

第一次创建窗口时,可以将其保存在全局窗口中:

bo new
set buftype=nofile
let g:my_run_buffer = bufnr("%")

然后您可以检查该缓冲区是否存在:

if bufexists(g:my_run_buffer)
    " Go to buffer
    set swb=usetab
    exec "sbuf " . g:my_run_buffer
else
    ... create it ...
endif

设置“swb = usetab”意味着当sbuf切换到缓冲区时,它将转到当前打开的任何窗口/选项卡(如果它已打开)。我不喜欢像这样全局设置swb,仅用于一次sbuf调用。有人知道更好的方法吗?