Запуск команд в ржавчине (vim) - PullRequest
0 голосов
/ 17 февраля 2020
std::process::Command::new("/usr/bin/sh")
    .arg("-c")
    .arg("vim")
    .arg("file")
    .spawn()
    .expect("Error: Failed to run editor");

Когда я запускаю этот код, запускается процесс vim, редактирующий файл, хотя он не открывается в терминале (не уверен в точной терминологии), как я могу / могу ли фактически открыть vim открытым в терминале

1 Ответ

1 голос
/ 17 февраля 2020

Когда я запускаю ваш код, vim открывается в терминале, но моя оболочка также работает в том же терминале, и vim, и оболочка сражаются за дисплей, и они оба получают любой ключ, который я набираю. Если вы тоже столкнулись с этой проблемой, вам нужно ждать в дочернем процессе:

std::process::Command::new("/usr/bin/sh")
    .arg("-c")
    .arg("vim")
    .arg("file")
    .spawn()
    .expect("Error: Failed to run editor")
    .wait()
    .expect("Error: Editor returned a non-zero status");
...