题使用elisp,如何在emacs终端仿真器中启动,发送键到和停止命令?

使用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")))
上一篇:在emacs中使用pdb时如何指定路径?


下一篇:在Emacs中将Python项目设置为root?