从UNIX名为pipe(fifo)的读入[neo] vim缓冲区

问题描述 投票:0回答:1

我目前正在尝试使用管道作为其stdin和stdout为任何程序构建服务器客户端体系结构。

我的确完成了整个服务器的工作,并且它通过命名管道(fifo)进行通信。我想做的是不断地(异步地)将stdout管道的内容读取到vim缓冲区中,并且我正在寻找解决该问题的最佳方法。

说我有一个程序python,它通过2(如果您考虑stderr,则与查找解决方案无关,则通过3进行通信)管道,即PIPE_IN作为其stdin,PIPE_OUT作为其stdout。

我可以从vim(使用:w)轻松地写入管道,但是如何从PIPE_OUT读入vim或neovim缓冲区?

这不应该移植到非UNIX系统上,但是我想保持与vim和neovim的兼容性。您对此有何建议?我应该为此使用vimscript语言吗?在这种情况下,使用vim的命令行模式更好吗?还有什么其他可能更优雅的解决方案?

提前感谢!

注意:可以在Soulthym/pyper on GitHub上找到服务器项目的代码以进行测试。

vim pipe buffer named-pipes neovim
1个回答
0
投票

NeoVim和现代Vim支持channels,可用于与外部组件进行异步通信。

特别是NeoVim支持sockconnect(),它支持命名管道:

将套接字连接到地址。如果sockconnect(){mode},则"pipe"应该是命名管道的路径。 [...]返回频道ID。

[创建频道时,您可以附加回调以在需要读取数据时获取通知。您还具有轮询频道以查看是否有可用数据的功能。

((不过,考虑使用Unix域套接字而不是管道,它们的功能要强大得多。它们是双向的,因此您不需要多对它们。也可以使用它们来实现可以侦听并接受同一地址的多个连接。)

© www.soinside.com 2019 - 2024. All rights reserved.