То, что вы пытаетесь сделать, чрезвычайно сложно, и я бы посоветовал против этого.
Единственный способ встроить терминальное приложение, которое вы описываете, - это по существу реализовать эмулятор терминала внутриваше приложение и отображать его вывод в вашем приложении.Существуют библиотеки, которые могут сделать это проще - например, libvterm , которые vim использует для реализации команды :terminal
, но даже в этом случае это будет сложно, особенно если вы хотите поддерживать расширенные функциональные возможности терминалаво встроенном редакторе (например, поддержка мыши).
Более распространенный способ сделать редактор доступным в терминальном приложении - запускать редактор как подпроцесс по требованию, позволяя ему «захватить» весь терминал.пока файл редактируется.После выхода из редактора ваше приложение может возобновить работу.