окно идентификации vim - PullRequest
       6

окно идентификации vim

1 голос
/ 08 августа 2011

У меня есть функция, которая открывает новое окно, содержащее результаты скрипта

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

Я хотел бы определить это конкретное окно, чтобы я мог вызывать свою функцию несколько раз и использовать одно и то же окнокаждый раз, вместо того, чтобы открывать новое окно.

что-то вроде

if exists(myWindow) 
    use myWindow
else
    bo new
endif

1 Ответ

2 голосов
/ 08 августа 2011

Хорошо, я думаю, что это может сработать ... но ... действуйте осторожно, потому что я не эксперт по 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.Кто-нибудь знает лучший способ?

...