使用elisp(不是交互式键和弦),如何在emacs终端仿真器中运行命令;以及如何将按键发送到该缓冲区?
起始术语似乎是必需的(术语“ / bin / bash”),它没有运行命令的范围.我认为这可能是因为术语旨在作为一种交互式工具…
我也想发送特定的密钥到正在运行的应用程序.可以做到这一点.我以为(insert’x)可以工作,但是它没有缓冲区参数,也不允许M- C- S- s-
解决方法:
您可以使用term-send-raw-string将输入直接发送到终端.例:
(progn
(set-buffer "*terminal*")
(term-send-raw-string "ls -l\n"))
这将模拟在终端缓冲区中键入ls -lRET的效果.
虽然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")))