2016-06-28 135 views
1

我正在写一个shell脚本,它利用屏幕一次显示几件东西(分割屏幕) 其中一个窗口将是“gui”代码,它会询问用户其他窗口的问题显示各种进度项目。等待屏幕窗口结束

部分方式通过脚本我有一个需要vim文件。但是这部分代码位于带重定向输入的子shell中。 VIM不能很好地工作在这里*

所以我想我可以在那里screen -X screen vim file

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

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

*有关vim和子shell:我已经使用exec 3<&1; cat file1 | (read whatever; vim file2 <&3)尝试,但这个有一些重大的问题(如不能看对@威廉的评论都是基于该代码文件的前几行)

+0

也许你想'vim < /dev/tty >/dev/tty'或'vim --nofork'。尽管你可能想要使用'$ {EDITOR-vim}'。另外,'vim --server'可能会有用。 –

+0

谢谢,现在去试试其中的一些 – DJL

+0

'vim < /dev/tty >/dev/tty'没有解决,与vim <&3'相同的问题vim --nofork看起来不太有用,它不是vim forking那就是问题(不是),而是'screen -X'立即结束 'vim --server'不存在,但我尝试了'vim --servername'和'vim --remote'。后者立即退出,所以也没有帮助:( Actulaly,'vim --remote-wait'作品:D – DJL

回答

1

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

在单独的窗口打开了VIM(和论点集中吧) ,然后打开该文件,进入该会话并等待,直到用户退出vim

睡眠看起来需要给他们vim会话时间才能启动,否则第二个命令找不到vim服务器,而是尝试在本地进行编辑't在重定向的子shell中工作)