等待屏幕 window 结束

Wait for screen window to end

我正在编写一个 shell 脚本,它利用屏幕一次显示多个内容(分屏) windows 之一是 "gui" 代码,它会询问用户问题,而其他 windows 显示各种进度项。

脚本的一部分,我需要 vim 一个文件。但这部分代码位于带有重定向输入的 subshell 中。 vim 在这里效果不佳*

所以我想我可以打开一个新屏幕 window 并在其中加载 vim screen -X screen vim file

问题是我需要 gui 代码等到 vim 退出后再继续。 那么我如何从屏幕内等待特定屏幕 window 结束? screen -ls 在这里不起作用,因为它只是我需要监视的整个会话中的几个 windows 之一。

我也查看了 screen -QX windows 但这似乎会中断 vim 会话

* 关于 vim 和子 shell:我试过使用 exec 3<&1; cat file1 | ( read whatever; vim file2 <&3 ) 但这有一些主要问题(例如看不到前几行文件!)

根据@William 的评论此代码:

screen -X screen vim --servername MYSERVER` 
sleep 1
vim --servername MYSERVER --remote-wait file.txt

在单独的 window 中打开 vim(并聚焦它) 然后在该会话中打开文件并等待用户退出 vim

似乎需要睡眠才能给他们 vim 会话时间来启动,否则第二个命令找不到 vim 服务器而是尝试在本地编辑(这赢得了在重定向的子 shell 中工作)