我正在尝试将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
函数不可靠。理想情况下,我将能够运行左侧缓冲区的内容,而无需通过stdin通过
node -p
保存文件,将stdout和stderr读入右侧缓冲区,这是不可编辑的。我知道有几种方法可以做到这一点,但是缺乏将它们粘合在一起的知识。
如何通过stdin到
node -p
传递缓冲区内容,捕获stdout和stderr并将它们传递到另一个缓冲区? 最佳答案
有各种各样的脚本或多或少可以满足您的需求。
我最近遇到了一个极简的pipe2eval,它使您可以评估当前行或视觉选择,并将结果插入下面的注释中。
哑巴示例:
my_array = [1,2,3];
my_array.push(4);
my_array[3];
// 4