将文本发送到Emacs中运行的终端

时间:2010-06-05 03:39:29

标签: emacs carbon-emacs

我无法将文本移入Emacs中运行的终端。

这是我的程序:

我从一个缓冲区中杀死了字符串“date”,并将其拉入另一个缓冲区的终端并点击返回。

终端的行为就像我什么也没输入一样。它只是返回提示。

我使用的是OS X 10.5.8和Emacs 23.1。我在Aquamacs,Carbon Emacs和http://emacsformacosx.com/上发布了这个程序。即使在我的.emacs文件为空的默认配置中,它们都显示出这种奇怪的行为。可能导致这种情况的原因是什么?

3 个答案:

答案 0 :(得分:15)

通过“在终端中”,我认为你的意思是你正在运行Emacs的内置终端模拟器。通常,终端仿真器将大多数密钥传输到shell进程的类型。在终端缓冲区中键入 C-c C-j ,使其进入普通Emacs密钥绑定可用的状态。您会看到模式行从(Term: char run)更改为(Term: line run)

附录:

不留下字符模式的Yanking文本有点棘手;但是,相关函数是term-paste(不是yank,它只是将文本插入到终端缓冲区而不将其发送到下级进程)。 term-paste会立即将最近的杀戮发送给下级进程,但不会提供你可能习惯的花哨的猛进功能(比如 M-y 循环先前的杀戮)。您可以将term-paste作为扩展命令运行: C-c M-x term-paste RET

可能最简单的解决方案就是暂时进入行模式( Cc Cj ),当你要粘贴东西时,然后立即返回char模式( Cc Ck )。或者更简单,只需一直保持在线模式。当我的终端登录到Oracle SQL * Plus会话时,我经常这样做。我很少注意到差异,但是我得到了各种方便的Emacs功能,比如能够输入 M-p 来循环一个长的,先前输入的SQL语句。

我原以为你总是可以像这样在线模式开始:

(add-hook 'term-mode-hook 'term-line-mode)

......但它对我不起作用。不知道为什么。

答案 1 :(得分:1)

在终端正在运行的缓冲区中,将终端设置为C-c C-j的线路模式。要粘贴文字,现在按S-Insert(即Shift-Insert)。如果您之后需要终端返回char模式,则为C-c C-k

答案 2 :(得分:-1)

当其他所有方法都失败时,我只需突出显示文字,然后点击编辑 - >复制,然后在其他emacs缓冲区中右键单击,然后点击粘贴。