使用Vim作为Javascript沙盒:如何将缓冲区写入节点并在另一个缓冲区中读取结果?

使用Vim作为Javascript沙盒:如何将缓冲区写入节点并在另一个缓冲区中读取结果?,javascript,node.js,vim,Javascript,Node.js,Vim,我试图将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 bufh

我试图将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
map r:silent:w!节点-p>/tmp/jsconsole
安静!cat'>/tmp/jsconsole
botright vnew
e/tmp/jsp控制台
设置buftype=nofile
设置bufhidden=hide
设为无记名
设置本地noswapfile
“设置不可修改”也许等我弄清楚如何锁定/解锁后
绞车
设置buftype=nofile
设置bufhidden=hide
设为无记名
设置本地noswapfile
autocmd QuitPre*:qa
设置自动读取
这有点管用。我发现vim的
自动读取功能不可靠

理想情况下,我可以运行左侧缓冲区的内容,而无需通过stdin通过
node-p
保存文件,将stdout和stderr读入右侧缓冲区,而右侧缓冲区是不可编辑的

我知道有几种方法可以做到这一点,但缺乏将其结合在一起的知识

  • 将输出读取到寄存器,并在选定的缓冲区中显示该寄存器
  • 利用r
  • 使用quickfix或:制作

如何通过stdin将缓冲区内容传递到
节点-p
,捕获stdout和stderr并将它们传递到另一个缓冲区?

根据Randy的评论,使用tmux顶部的vim slime和右侧tmux窗格中的节点REPL确实有效。这是专门回答这个问题的一种非常有效的方法,尽管我仍然对包含vim的答案感兴趣


虽然我还没有设置它,但我计划将其作为一个由tmuxinator管理的特定tmux配置。

有各种各样的脚本或多或少地执行您想要的操作

我最近遇到了一个极简主义者,它可以让你评估当前的行或视觉选择,并在下面的评论中插入结果

愚蠢的例子:

my_array = [1,2,3];
my_array.push(4);
my_array[3];
// 4
您可以使用只需安装它并将这些行添加到.vimrc

let g:codi#interpreters = {
  \ 'javascript': {
     \ 'rightalign': 0,
  \ },
\ }

这与基本相同,但使用JS而不是Python。