使用elisp
(非交互式按键),如何在emacs
终端仿真器中运行命令;以及如何将按键发送到该缓冲区?
启动term
似乎需要(term "/bin/bash")
,它没有运行命令的空间。我想这可能是因为 term 旨在作为一个交互式工具......
另外,我想将特定密钥发送到正在运行的应用程序。可以做到这一点。我认为(插入'x)可能有效,但它没有缓冲参数,也不允许M-C- S- s-
答案 0 :(得分:4)
您可以使用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")))
答案 1 :(得分:0)
在第一个例子中,你也可以尝试:
(with-current-buffer "*terminal*"
(term-send-raw-string "ls -l\n"))