2016-06-28 6 views
1

Я пишу сценарий оболочки, который использует экран для одновременного отображения нескольких вещей (разделенные экраны) Одним из окон будет «gui» код, который будет задавать пользователю вопросы в то время как другие окна отображать различные элементы прогресса.Подождите, пока откроется окно экрана

Частично через сценарий Мне нужно vim-файл. Но эта часть кода находится в подоболочке с перенаправленными входами. ВИМ не работает хорошо здесь *

Поэтому я полагал, что я мог бы открыть новое окно экрана и загрузки Vim там screen -X screen vim file

Проблема в том, мне нужен код ГИП подождать, пока ВИМ не прекращал, прежде чем продолжить. Итак, как я могу подождать, пока закончится конкретное оконное окно, изнутри экрана? screen -ls не будет работать здесь, потому что это всего лишь одно из нескольких окон в течение всего сеанса, которые мне нужно контролировать.

Я также посмотрел на screen -QX windows, но это, казалось бы прервать сеанс ВИМ

* Относительно Vim и подоболочку: Я попытался с помощью 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 thats (это не так), а скорее, что 'screen -X' заканчивается сразу ' vim --server' не существует, но я пробовал 'vim --servername' и' vim --remote'. Последний выходит немедленно, поэтому тоже не полезно :( Actulaly, 'vim --remote-wait' works: D – DJL

ответ

1

на основе комментариев @ Уильям этого кода:

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

открывает Vim в отдельном окне (и фокусирует его) , а затем открывает файл в этот сеанс и ждет, пока пользователь не выйдет из vim

Сон будет казаться обязательным для запуска сеанса сеанса vim, иначе 2-я команда не сможет найти сервер vim и вместо этого попытается отредактировать локально (что выиграло Не работайте внутри перенаправленной подоболочки)