Vim 如何调用“外部”;互动/途易“;命令、交互和读取std输出

Vim 如何调用“外部”;互动/途易“;命令、交互和读取std输出,vim,Vim,我正在尝试编写我的第一个vim脚本,因此如果这个问题归结为不理解基础知识,我很抱歉 主要目标是我想从vim内部调用一个外部命令,并将结果读回文件。 我知道如何使用简单的shell命令,例如r!ls。但是,我想要与之交互的命令是“interactive” 我不知道这是否是一个有意义的描述。但在shell中调用此命令会打开一个TUI,然后在与TUI交互后,该命令将退出并将内容放入标准输出。我想把标准输出读回vim 讨论特定命令可能会有所帮助,该命令是papiscli引文管理器。如果您在shell中调

我正在尝试编写我的第一个vim脚本,因此如果这个问题归结为不理解基础知识,我很抱歉

主要目标是我想从vim内部调用一个外部命令,并将结果读回文件。 我知道如何使用简单的shell命令,例如
r!ls
。但是,我想要与之交互的命令是“interactive”

我不知道这是否是一个有意义的描述。但在shell中调用此命令会打开一个TUI,然后在与TUI交互后,该命令将退出并将内容放入标准输出。我想把标准输出读回vim

讨论特定命令可能会有所帮助,该命令是
papis
cli引文管理器。如果您在shell中调用,例如,
papis list--format'{doc[title]}{doc[author]}'
,它将打开一个TUI,允许我筛选并选择一个文档。选择文档后,它会将标题和作者放入标准输出中。这就是我想读入vim的内容

然而,我最初的几次尝试都没有成功。尝试天真的
:r!PAPI list
会导致错误,即使该命令在shell中有效,并会导致TUI被打开。所以我显然错过了一些东西


有人能推荐一个指南或建议一个可能的解决方案来正确调用基于TUI的外部命令并读回它们的标准输出吗?

我的第一个建议是从等式中删除
vim
,也就是说。尝试通过命令行/shell脚本简单地重定向其标准输出来操作程序。顺便说一句,什么操作系统/shell?如果
papis
将其UI直接写入
/dev/tty
,并且只将结果输出到stdout,那么它应该可以正常工作。显然,它不是。如果有一个交互编辑然后导出到文件的选项,您可以从Vim中读取该选项。否则,我唯一能想象的(除了修改
papis
本身)是通过
tee
捕获所有输出(这样您仍然可以看到UI,但也可以记录所有内容),然后从记录的末尾(通过
tail
sed
)获取真正的输出,从Vim上读到这些。@IngoKarkat我在
papis
re
/dev/tty
上打开了一个问题,看看主要的开发人员会说些什么。@phd谢谢你的提示,我会在Google上搜索一下重定向stdout。我的第一个建议是从等式中删除
Vim
。尝试通过命令行/shell脚本简单地重定向其标准输出来操作程序。顺便说一句,什么操作系统/shell?如果
papis
将其UI直接写入
/dev/tty
,并且只将结果输出到stdout,那么它应该可以正常工作。显然,它不是。如果有一个交互编辑然后导出到文件的选项,您可以从Vim中读取该选项。否则,我唯一能想象的(除了修改
papis
本身)是通过
tee
捕获所有输出(这样您仍然可以看到UI,但也可以记录所有内容),然后从记录的末尾(通过
tail
sed
)获取真正的输出,从Vim上读到这些。@IngoKarkat我在
papis
re
/dev/tty
上打开了一个问题,可以看到主要开发人员说了些什么。@phd谢谢你的提示,我会在谷歌上搜索一下重定向stdout。