Ich schreibe ein Shell-Skript, das Bildschirm verwendet, um mehrere Dinge gleichzeitig anzuzeigen (geteilte Bildschirme) Eines der Fenster wird der "GUI" -Code sein, der den Benutzer Fragen während anderer Fenster stellen wird Anzeige verschiedener FortschrittselementeWarte auf das Bildschirmfenster zu beenden
Teilweise durch das Skript muss ich eine Datei vim. Dieser Teil des Codes befindet sich jedoch innerhalb einer Subshell mit umgeleiteten Eingaben. vim nicht gut arbeiten hier *
Also dachte ich, ich könnte screen -X screen vim file
Das Problem ein neues Bildschirmfenster und Last vim dort eröffnen, das ich den GUI-Code müssen warten, bis vim, bevor Sie fortfahren verlassen hat. Also, wie kann ich warten auf ein bestimmtes Bildschirmfenster zu beenden, von innerhalb des Bildschirms? screen -ls
wird hier nicht funktionieren, weil es nur eines von mehreren Fenstern innerhalb der gesamten Sitzung ist, die ich überwachen muss.
Ich habe betrachteten auch screen -QX windows
aber dies scheint die vim Sitzung
* Bezogen auf vim und die Subshell zu unterbrechen: Ich habe versucht, exec 3<&1; cat file1 | (read whatever; vim file2 <&3)
verwenden, aber dies hat einige wichtige Fragen (zB nicht sehen können, die ersten Zeilen der Datei)
Vielleicht möchten Sie entweder 'vim < /dev/tty >/dev/tty' oder' vim --nofork'. Obwohl Sie wahrscheinlich '$ {EDITOR-vim}' verwenden möchten. Auch "vim --server" könnte nützlich sein. –
danke, werde einige von diesen jetzt versuchen – DJL
'vim < /dev/tty >/dev/tty' hat nicht funktioniert, die gleichen Probleme wie' vim <& 3' vim --nofork sieht nicht sinnvoll aus, es ist nicht vim forking das ist die Ausgabe (ist es nicht), aber eher, dass "Bildschirm-X" sofort endet 'vim --server' existiert nicht, aber ich versuchte' vim --servername' und 'vim --remote'. Letzteres tritt sofort aus, also auch nicht hilfreich :( Actually, 'vim --remote-wait' funktioniert: D – DJL