2016-12-03 119 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'上。 –