#vim #rust #vim-plugin #neovim
#vim #Ржавчина #vim-плагин #neovim
Вопрос:
При запуске RustRun в vim с помощью rust.vim вывод будет выведен на консоль вывода команд vim. При запуске go-run
для программы Go он откроет новый раздел терминала и распечатает там выходные данные.
- Как мне запустить программу Rust в новом разделенном буфере?
- Как мне повторно использовать один и тот же буфер при каждом вызове 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>