我正在编写一个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 )
但这有一些重大问题(例如,看不到文件的前几行!)
答案 0 :(得分:1)
基于@ William的评论此代码:
screen -X screen vim --servername MYSERVER`
sleep 1
vim --servername MYSERVER --remote-wait file.txt
在一个单独的窗口中打开vim(并专注于它) 然后将文件打开到该会话并等待用户退出vim
似乎需要睡眠才能让他们启动vim会话时间,否则第二个命令找不到vim服务器而是尝试在本地编辑(这在重定向的子shell中不起作用)