2016-06-28 137 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中工作)