Когда я запускаю vim в подпроцессе, у меня есть скрипт, который создал этот подпроцесс, продолжая печатать различные обновления состояния. Однако обновления печатаются поверх моего экземпляра vim. Как мне создать поведение, при котором я вижу вывод только после выхода из vim (: q).
Я запускаю подпроцесс следующим образом:
def callVim():
# Open the file with the text editor
EDITOR = os.environ.get('EDITOR','vim')
call([EDITOR, temp_loc])
try:
print('Starting vim process...')
vim = Process(target = callVim)
vim.start()
except KeyboardInterrupt:
print("Terminating vim server.")
vim.terminate()
vim.join()
И вот как выглядит наложенный вывод («Проверьте, обновлена ли цель ...», являясь выходом):
Спасибо за любую помощь.
Приветствуются любые предложения.
Я использую tmux, если это имеет значение?
РЕДАКТИРОВАТЬ: Поэтому я попытался перенаправить sys.stdout в переменную перед вызовом vim, вот так:
so = sys.stdout = StringIO()
EDITOR = os.environ.get('EDITOR','vim')
call([EDITOR, self.temp_loc])
Но он все еще печатается поверх vim.
EDIT2: Также мне нужно сохранить вывод где-нибудь, потому что я использую его в другом месте в программе.