我正在尝试将 vim 用作复杂的 javascript 沙盒编辑器。
最终目标是拥有一个包含我的代码的左窗口,以及一个包含来自 node.js 可执行文件的动态更新输出的右窗口。
我目前正在使用:
map <Leader>r :silent :w !node -p > /tmp/jsconsole<cr>
silent !cat '' > /tmp/jsconsole
botright vnew
e /tmp/jsconsole
set buftype=nofile
set bufhidden=hide
set nobuflisted
setlocal noswapfile
" set nomodifiable " maybe later once i can figure out how to lock/unlock
wincmd h
set buftype=nofile
set bufhidden=hide
set nobuflisted
setlocal noswapfile
autocmd QuitPre * :qa
set autoread
这行得通,有点。我发现vim的autoread
功能不可靠。
理想情况下,我将能够运行左侧缓冲区的内容,而无需node -p
通过 stdin 保存文件,将 stdout 和 stderr 读入右侧缓冲区,这是不可编辑的。
我知道有几种方法可以做到这一点,但缺乏将它们粘合在一起的知识。
- 将输出读取到寄存器并在所选缓冲区中显示该寄存器
- 利用 r!
- 使用 quickfix 或 :make
如何通过 stdin to 传递缓冲区内容,node -p
捕获 stdout 和 stderr 并将它们传递到不同的缓冲区?