Как перенаправить `RustRun` в разделенный буфер в vim

#vim #rust #vim-plugin #neovim

#vim #Ржавчина #vim-плагин #neovim

Вопрос:

При запуске RustRun в vim с помощью rust.vim вывод будет выведен на консоль вывода команд vim. При запуске go-run для программы Go он откроет новый раздел терминала и распечатает там выходные данные.

  1. Как мне запустить программу Rust в новом разделенном буфере?
  2. Как мне повторно использовать один и тот же буфер при каждом вызове rust run?

Ответ №1:

Для достижения этой цели я Redir перенаправлял вывод команды в новое разделенное окно. Чтобы повторно использовать тот же буфер, создайте новый именованный буфер и запишите в него выходные данные. При вызове rust run найдите именованный буфер и удалите, если он существует.

 function! Redir(cmd)
    redir => output
        silent! execute(a:cmd )
    redir END
    let output = split(output, "n")
    
    if bufwinnr('rust.out') >0 
       bdelete rust.out
    endif

    vnew rust.out
    let w:scratch = 1
    setlocal buftype=nofile filetype=rust_out bufhidden=wipe noswapfile
    call setline(1, output)

    "focus back to the source file on the left, from which we ran `RustRun`
    wincmd h
endfunction

"redirect any vim command output using Redir command.
command! -nargs=1 Redir call Redir(<f-args>)

"mapping for rust files.
au FileType rust nmap <silent> <leader>rr  :call Redir('RustRun')<CR><CR>