如何在 Vim 中的行尾插入“.w”评估的结果?

d1p*_*mat 5 linux vim command-line vimrc

我希望能够在 Vim 中评估一行 Javascript(或其他代码),并将结果显示在该行末尾的注释中。

例如,如果我有一个文件,如:

console.log(4 + 5);
Run Code Online (Sandbox Code Playgroud)

我的光标在该行上,我使用命令:.w !node -e,结果“ 9”将出现在下面的缓冲区中。如果我使用:. !node -e,整行将被替换为结果,9

我如何才能创建一个命令,将结果附加到注释中的行尾,如下所示:

console.log(4 + 5);    // 9
Run Code Online (Sandbox Code Playgroud)

另外值得注意的是 using:r将在下一行打印传递给它的任何内容。r !echo "This is text."This is text.在光标下方的行上插入“ ”。但是像这样的命令...

:r ". !node -e"
Run Code Online (Sandbox Code Playgroud)

...将尝试读取". !node -e"为文件而不是命令;我不太了解这种行为,但它使事情变得不那么直观。

我希望最终结果有点让人想起 Atom 文本编辑器处理 Hydrogen 内核的方式,代码 eval 的结果出现在代码的左侧。计划是创建一个键绑定(<C-Enter><F5>)来自动评估当前行并显示结果。

小智 3

如果你的行看起来像:4+5=你可以使用类似的东西:

 :map "_ay/=^Mo^[!!echo ^Ra \| bc^MkJ
  1. _......................跳转到实际行的开头
  2. “ay/=^M ...将直到 = 拖入缓冲区 a
  3. o^[ ......新建一个空行
  4. !! ..............启动一个shell程序将结果写入这一新行
  5. ^Ra ......... 在命令中插入缓冲区 a 的内容:echo ^Ra \| BC^M
  6. k ............转到上一行
  7. J ............. 将下一行(结果)连接到实际行
  8. 也许您想删除与x连接的空白

我希望这就是你。