使用elisp,如何启动,发送密钥,并停止在emacsterminal模拟器中的命令?

使用elisp (不是交互式的和弦),我如何在emacsterminal模拟器中运行命令; 以及如何发送按键到该缓冲区?

起始term似乎需要(term "/bin/bash") ,它没有运行命令的范围。 我认为这可能是因为术语是作为一个交互工具…

另外我想发送特定的键到正在运行的应用程序。 可以这样做吗? 我认为(插入'x)可能工作,但它没有缓冲参数,也不允许M-C- S-

您可以使用term-send-raw-string将输入直接发送到终端。 例:

 (progn (set-buffer "*terminal*") (term-send-raw-string "ls -l\n")) 

这将模拟将ls -l RET键入终端缓冲区的效果。

尽管term对于参数解析来说不是很灵活,但启动一个shell并用term-send-raw-string提供命令来加载目标程序通常就足够了。 下面是一个elisp的一小段脚本,它将一些命令编写到一个交互式程序中:

 (progn (let ((term-buffer (term "/bin/bash"))) (set-buffer term-buffer) ;; start up vi (term-send-raw-string "vi hello.txt\n") ;; some line noise :P (term-send-raw-string "ihello world\033:wq\n") ;; quit our shell (term-send-raw-string "exit")))