Когда я запускаю ваш код, 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");