在vim中重用现有的缓冲区

时间:2017-09-20 17:48:26

标签: vim centos7

我正在努力学习如何编写vim-plugin,并且想出最简单的方法来编写我自己编写的编译函数,以便用vim-plugin启动并最终完成以下操作:

function! PreprocessingCode(commands)
    " Get the bytecode.
    try
        let bytecode = system(a:commands . " -E -o " . bufname("%") . " 2>&1")
    catch
        echo v:exception
    endtry

    " Check that buffer already exist
    if bufwinnr('__Bytecode__') > 0
       "Code to replace the buffer.
       setlocal filetype=objectcode
       setlocal buftype=nofile
       call append(0, split(bytecode, '\v\n'))
    else
        " Open a new split and set it up.
        vsplit __Bytecode__
        normal! ggdG
        setlocal filetype=objectcode
        setlocal buftype=nofile

        " Insert the bytecode.
        call append(0, split(bytecode, '\v\n'))
     endif
endfunction

nnoremap <buffer> <localleader>b :call PreprocessingCode("g++")<cr>

主要问题是我想使用__Bytecode__缓冲区。因此,如果缓冲区已经打开,那么函数应该重用现有缓冲区,这样如果我多次按b,它就不应该通过vsplit打开多个窗口堆栈。

来到这里。不知道如何达到预期的效果? 有什么想法吗? 感谢。

0 个答案:

没有答案