是否可以将emacs术语配置为将所有内容(可能是异常M-x)作为原始命令发送。这将允许例如在终端内运行emacs -nw,并且每个命令都适用于终端内的emacs,现在是外部的。\ / p>
我想要这样的东西因为我有时从终端或屏幕运行nano,我也使用ssh,这将使我在服务器上运行emacs。现在,当我运行nano时,我需要调用发送C-x的C-c x。
答案 0 :(得分:4)
我首先建议使用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
时, eterm-color
是终端(C-<left>
)所期望的。这不一定与将C-<left>
绑定到term-send-raw
相同。最好的做法是尝试将任何键绑定到term-send-raw
,如果这不起作用,请使用term-send-raw-string
创建一个函数并绑定它。如果在term-mode
缓冲区中有shell,发送引号,然后键入密钥,则可以确定字符串应该是什么。您可以使用
(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
。它可以在melpa中使用。它提供了我上面列出的功能,其默认值优于term-mode
IMO。但它可能会从你想要的更进一步,因为它试图将term-mode
与其他emacs集成,而不仅仅是传递内容。