如何使用 JavaScript 编写 NeoVim 插件?

And*_*rew 3 javascript node.js neovim

听说 NeoVim 的优势之一是更灵活的插件架构。是否有用于在 JS 中编写插件的 API?

有一些项目似乎与此相关: neovim/node-hostneovim/node-clientfritzy/node-neovimrhysd/promised-neovim-client 但我不确定如何使用它们。我如何访问Vim 函数或命令,或等效功能(以及记录在哪里)?


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

Jus*_*yes 6

  1. 安装节点客户端
    • npm install -g neovim
    • 运行:checkhealth确认。
  2. 快速入门,示例代码(如下)贴到rplugin/node/index.js您的Nvim某处runtimepath(例如~/.config/nvim/rplugin/node/index.js)。
  3. 运行:UpdateRemotePlugins
  4. 重启 Nvim。
  5. 尝试:SetMyLine命令(在上面的代码示例中定义)。

示例代码

function onBufWrite() {
  console.log('Buffer written!');
}

module.exports = (plugin) => {
  function setLine() {
    plugin.nvim.setLine('A line, for your troubles');
  }
  plugin.registerCommand('SetMyLine', [plugin.nvim.buffer, setLine]);
  plugin.registerAutocmd('BufWritePre', onBufWrite, { pattern: '*' });
};
Run Code Online (Sandbox Code Playgroud)