channel
channel 类型
| 方式 | 相关函数 | 具体说明 |
|---|---|---|
| stdin/stdout | stdioopen() | |
| stdin/stdou/stderr | jobstart() | |
| PTY | termopen() | :h terminal-emulator |
| TCP/IP socket or named pipe | sockconnect() | |
| RPC1 | serverstart() | :h rpc-connecting |
1
RPC 让另一个进程连接 nvim 所监听的 socket,从而让 nvim 和另一进程相互发送远程调用和事件。 而且 RPC 方式是隐式被信任的,进程端可以调用任何 nvim 的 api。
每一个 channel 在当前 nvim 会话期间,都被一个单独的整数 id 进行标识:
stdioopen()等创建 channel 的函数返回其 idchansend()之类的函数消耗掉 id
channel 默认传递原始字节:nvim 端和另一进程端都只能读取字节。
RPC
使用 RPC 的 API 客户端可以:
- 调用任何 API 函数
- 监听事件
- 从 nvim 获取远程调用