如何将每个命令发送到Emacs Term?

问题描述:

是否可以配置emacs术语将所有内容(可能是异常M-x)作为原始命令发送。这将允许例如在终端内运行emacs -nw,并且每个命令都可以用于终端内的emacs,现在是外部的。如何将每个命令发送到Emacs Term?

我想要这样的东西,因为我有时从终端或屏幕运行nano,我也使用ssh,这将使我能够在服务器上运行emacs。现在当我运行nano时,我需要调用发送C-x的C-c x。

+0

你问'term-mode'吗? – jpkotta

+0

@jpkotta是术语模式。 – jcubic

我首先建议使用tramp编辑远程文件。我更喜欢在远程机器上打开一个编辑器。如果您尝试在term-mode缓冲区内运行emacs,那么您将一直在与它战斗。

如果您必须在term-mode缓冲区中运行emacs,则可以使用term-send-rawterm-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整合在一起,而不是仅仅传递。