用于启动终端应用程序的节点包装器,例如 vim、emacs、tmux

Node wrapper to start a terminal application like vim, emacs, tmux

TLDR;我如何从终端 运行 一个节点进程,从节点启动一个进程,退出节点进程并让进程 附加 到父终端?

我正在编写一个节点终端应用程序,它应该通过启动一个新的终端应用程序来结束(例如 vimemacstmux)。我希望这个应用程序 运行 就像是在启动节点应用程序的终端中手动执行的一样。

我当前 workaround tmux 是 运行 节点应用程序,它设置一个新的 tmux 会话并回显 tmux attach-session 应用程序存在之前的命令。然后用户可以在终端中手动键入此命令并执行它。现在 tmux 会话 运行s 附加 到终端。

我想将 attach 命令移动到节点应用程序中,但最终结果相同。 IE。节点应用程序终止并且 tmux 会话 运行 连接到终端。在我看来,这似乎需要对 emacsvim 等应用程序执行相同的操作。我无法解耦设置和附加。 (据我所知,vimemacs 可以处理这种解耦,我很想知道,但最初的问题要求为任何终端应用程序提供通用解决方案)。

通过附加,我的意思是好像 command/program 是在终端中手动执行的。

POSIX exec 解决了这个问题,正如@Amadan 在上面评论的那样。此解决方案不适用于 windows。

以下代码段显示了如何使用 kexec 模块执行此操作的示例。

const kexec = require("kexec");

kexec("emacs -nw");