При эмуляции vim внутри подпроцесса Python моя программа будет печатать поверх моего экземпляра vim. Как мне это остановить? - PullRequest
0 голосов
/ 15 апреля 2020

Когда я запускаю 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()

И вот как выглядит наложенный вывод («Проверьте, обновлена ​​ли цель ...», являясь выходом):

vim with python print statements in top

Спасибо за любую помощь.

Приветствуются любые предложения.

Я использую tmux, если это имеет значение?

РЕДАКТИРОВАТЬ: Поэтому я попытался перенаправить sys.stdout в переменную перед вызовом vim, вот так:

so = sys.stdout = StringIO()
EDITOR = os.environ.get('EDITOR','vim')
call([EDITOR, self.temp_loc])

Но он все еще печатается поверх vim.

EDIT2: Также мне нужно сохранить вывод где-нибудь, потому что я использую его в другом месте в программе.

...