我怎样才能用JavaScript编写一个NeoVim插件?

我听说NeoVim的一个优点是更灵活的插件架构。 有没有一个API在JS编写插件?

有一些似乎与此有关的项目: neovim / node-host , neovim / node-client , fritzy / node-neovim , rhysd / promised-neovim-client,但我不确定如何使用它们。 我如何访问Vim函数或命令,或者等价的function(以及在哪里logging)?


promised-neovim-client通过附加到stdin和stdout与NeoVim进程交互。 所以也许在NeoVim中,我可以启动一个promised-neovim-client脚本,并将它传递给正在运行的NeoVim进程的pid,脚本可以附加到它的stdin和stdout上?

安装节点主机后,按照README.md中的快速入门 。

  1. 将代码示例粘贴到Nvim'runtimepath'某处的rplugin/node/foo.js文件中。
  2. 运行:UpdateRemotePlugins
  3. 重新启动Nvim。

你绝对可以在JavaScript中编写neovim插件。 从https://github.com/neovim/neovim/blob/master/runtime/doc/remote_plugin.txt#L7

可扩展性是Nvim的主要目标。 任何编程语言都可以使用
在不改变Nvim本身的情况下扩展Nvim。 这是通过具有直接通信通道的远程插件(coprocesses)(通过| RPC |)来实现的
Nvim进程。

即使这些插件运行在不同的进程,他们可以打电话,被称为,
并接收事件,就像插件的代码在主进程中执行一样。

你只需要谈谈远程API

Neovim远程插件(rplugin)是任何通过远程API(可以通过任意传输机制:TCP地址,命名pipe道,标准input/标准输出,…)到达nvim的程序。

我也找不到远程API文档。 在neovim/node-client有一些例子。

你还可以看看这个文件