2016-12-03 42 views
1

我听说NeoVim的一个优点是更灵活的插件架构。 是否有一个用于在JS中编写插件的API?如何使用JavaScript编写NeoVim插件?

有一些项目,这似乎与此有关: neovim/node-hostneovim/node-clientfritzy/node-neovimrhysd/promised-neovim-client 但我不知道如何使用它们。 如何访问Vim functions或命令或等效功能(以及此文档在哪里)?


promised-neovim-client通过附加到它的标准输入和标准输出与NeoVim进程交互。 所以从内NeoVim也许,我可以开始一个承诺 - neovim客户端脚本,并通过它运行NeoVim进程的PID和脚本可以附加到其stdin和stdout?

回答

1

installing节点主机,遵循quickstart in the README.md

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

'node-host'中的NeoVim API与此相同:https://github.com/neovim/node-client/blob/master/index.d.ts? –

+0

当我运行':UpdateRemotePlugin'时,我得到了'function remote#host#UpdateRemotePlugins [6] .. 47_RegistrationCommands [15] .. remote#h ost#Require [13] ..提供者#pythonx#要求,第14行 Vim(let):E902:“”不是可执行文件 函数remote#host#UpdateRemotePlugins [6] .. 47_RegistrationCommands [15] .. remote#h ost#Require [13 ] .. provider#pythonx#Require,line 21 Vim(for):E121:Undefined variable:channel_id' –

+1

Nevermind,'sudo pip3 install neovim' fixed that。 –

1

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

可扩展性是Nvim的主要目标。任何编程语言都可以使用
来扩展Nvim而不更改Nvim本身。与
的Nvim处理这是用远程 插件,具有直接通信信道协进程(| | RPC经由)来实现的。

即使这些插件在单独的进程就可以调用运行,被称为,
和接收事件,就好像插件的代码在主 过程中被处决。

只是你必须说话以远程API

一个Neovim远程插件(rplugin)是会谈通过远程API(可通过任意的传输机制来达到nvim任何程序:TCP地址,命名管道,stdin/stdout,...)。

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

你能不能也来看看在这个file

+1

在master上,远程API现在记录在':help api-funcs'上。 –