2009-10-03 78 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手冊頁包含詳細信息。

相關問題