等待屏幕窗口结束

时间:2016-06-28 08:59:16

标签: bash vim gnu-screen

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

通过脚本的一部分我需要vim文件。但是这部分代码位于带有重定向输入的子shell中。 vim在这里效果不好*

所以我想我可以打开一个新的屏幕窗口并在那里加载vim screen -X screen vim file

问题是我需要gui代码等到vim退出才继续。 那么我怎样才能在屏幕内等待特定的屏幕窗口结束? screen -ls在这里不起作用,因为它只是我需要监控的整个会话中的几个窗口之一。

我也看过screen -QX windows,但这似乎会打断vim会话

*与vim和子shell相关:我尝试使用exec 3<&1; cat file1 | ( read whatever; vim file2 <&3 )但这有一些重大问题(例如,看不到文件的前几行!)

1 个答案:

答案 0 :(得分:1)

基于@ William的评论此代码:

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

在一个单独的窗口中打开vim(并专注于它) 然后将文件打开到该会话并等待用户退出vim

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