如何将每个命令发送到Emacs Term?
问题描述:
是否可以配置emacs术语将所有内容(可能是异常M-x)作为原始命令发送。这将允许例如在终端内运行emacs -nw,并且每个命令都可以用于终端内的emacs,现在是外部的。如何将每个命令发送到Emacs Term?
我想要这样的东西,因为我有时从终端或屏幕运行nano,我也使用ssh,这将使我能够在服务器上运行emacs。现在当我运行nano时,我需要调用发送C-x的C-c x。
答
我首先建议使用tramp
编辑远程文件。我更喜欢在远程机器上打开一个编辑器。如果您尝试在term-mode
缓冲区内运行emacs,那么您将一直在与它战斗。
如果您必须在term-mode
缓冲区中运行emacs,则可以使用term-send-raw
和term-send-raw-string
。例如:
(defun term-send-backward-word()
"Move backward word in term mode."
(interactive)
(term-send-raw-string "\eb"))
<Escape> b
是当你按下C-<left>
什么终端(这是eterm-color
)的期望。这不一定与绑定C-<left>
到term-send-raw
相同。最好的办法是尝试绑定term-send-raw
的任何密钥,如果这不起作用,请使用term-send-raw-string
作为函数并将其绑定。如果您在term-mode
缓冲区中有一个外壳,发送一个报价,然后键入密钥,则可以确定该字符串应该是什么。您可以发送报价与
(defun term-send-quote()
"Quote the next character in term-mode.
Similar to how `quoted-insert' works in a regular buffer."
(interactive)
(term-send-raw-string "\C-v"))
这就像在普通的终端输入C-v
。
最后,我会提到multi-term
。它在梅尔帕可用。它提供了上面列出的功能,并且具有比term-mode
IMO更好的默认值。但它可能远离你想要的,因为它试图将term-mode
与其余的emacs整合在一起,而不是仅仅传递。
你问'term-mode'吗? – jpkotta
@jpkotta是术语模式。 – jcubic