2009-10-03 41 views
2

我想知道如何编写脚本来发送消息给gnu屏幕“窗口”。即我有一个屏幕会话打开,在一个窗口中我有一个vim会话,在另一个窗口中是一个方案解释器。当我保存我的vim会话时,我希望它能够在新环境中加载的其他窗口中重新启动解释器。我可以计算出除了如何在vim上有一个“保存”钩子以外的其他东西,将一个shell命令发送到另一个“屏幕窗口”,导致脚本终止并重新启动。如果我能弄清楚如何发送命令,我可以终止进程,然后开始一个新的命令 - 我只需要确保它在正确的“窗口”中启动。我该如何让vim发送命令到gnu屏幕会话

回答

4

让vim发出shell命令,并使用screen -X发出命令给屏幕。 :at <other-window> stuff <restart-command>的一些排列组合。有关更多命令,请参见man screen的自定义部分。

例如,如果我是在屏幕窗口1,使用vim,我只好在窗口0的IRB会议上,重新启动IRB会议上,我会做通过CTRL-进入

:!screen -X at 0 stuff exit^Mirb^M 

^M V Enter)。

+1

嘿,那太棒了!几乎正是我正在寻找的 - 唯一的问题是,它发送我想要的另一个屏幕的命令,但然后等待,直到我按下输入(或10秒后),让它实际“粘贴”到屏幕上?它说:“来自{用户名}的命令:{command}。 你认为有办法让屏幕在接收到命令后立即接受它? – shaunxcode 2009-10-03 18:25:09

+0

我对屏幕状态信息不熟悉。 。 – rampion 2009-10-03 21:01:33

+2

将msgwait设置为0(Ca:msgwait 0 ),它将消除延迟。您可以注册它以设置msgwait,运行真实命令,然后将其设置回。 – 2010-07-09 19:35:08

1

如果您足够让计划解释器每隔几秒钟运行一次,则可以在第二个屏幕窗口中运行watch /path/to/scheme/interpreter /path/to/scheme/file。调整watch运行命令的时间间隔可以使用命令行参数进行调整。 watch手册页包含详细信息。

相关问题