Виконання команди в іншому існуючому терміналі можна зробити, але це далеко не банально.
По-перше, у вас відкрито більше одного емулятора терміналу. Ці емулятори терміналів мають оболонку, ймовірно, bash
якщо ви працюєте в Linux. За допомогою ps
команди ви можете знайти ідентифікатори процесу (PID) всіх оболонок, що працюють на вашій машині. Зараз велике питання; кому надіслати команду?
Ви шукаєте оболонку, яка належить до терміналу, на якому потрібно показати команду. Запуск команди echo $$
на відповідному терміналі повинен повернути PID оболонки, що працює на цьому терміналі. За допомогою /proc
файлової системи можна визначити стандартний вхід оболонки /proc/<PID>/fd/0
, який є pty
пристроєм.
Далі потрібно надіслати команду до цього терміналу. Це потрібно зробити за допомогою TIOCSTI
ioctl
команди на pty оболонки. Ви можете знайти вихідний код C для цього тут . Скомпілюйте цю програму як, наприклад, ttyecho
і покладіть її в каталог у вашому $ PATH.
Тепер фрагменти на місці, і ви можете викликати ttyecho
команду з назвою pty оболонки та командою python <filename>
.
Робити все це в vimscript залишається як вправа для читача. :-)