12

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

这是我的程序:

我从一个缓冲区中删除了字符串“日期”,并将其拉入另一个缓冲区中的终端,然后点击返回。

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

我正在使用 OS X 10.5.8 和 Emacs 23.1。我已经在 Aquamacs、Carbon Emacs 和http://emacsformacosx.com/上的版本上尝试过这个程序。即使在我的 .emacs 文件为空的默认配置中,它们也都表现出这种奇怪的行为。这可能是什么原因造成的?

4

3 回答 3

16

“在终端中”我假设您的意思是您正在运行 Emacs 的内置终端仿真器。通常,终端仿真器将大多数键完全按照键入的方式传输到 shell 进程。键入C-c C-j终端缓冲区以将其置于普通 Emacs 键绑定可用的状态。您会看到模式行从(Term: char run)变为(Term: line run)

附录:

在不离开 char 模式的情况下拖动文本有点棘手;然而,相关函数是term-paste(not yank,它只是将文本插入终端缓冲区而不将其发送到下级进程)。 term-paste将立即将最近的 kill 发送到下级进程,但不提供您可能习惯的花哨的 yank 功能(例如M-y循环通过先前的 kill)。您可以term-paste作为扩展命令运行:C-c M-x term-paste RET.

可能最简单的解决方案是当您有要粘贴的内容时暂时进入行模式 ( C-c C-j),然后立即回到字符模式 ( C-c C-k)。或者更简单,只需始终保持在线模式即可。当我将终端登录到 Oracle SQL*Plus 会话时,我经常这样做。我很少注意到差异,但我得到了各种方便的 Emacs 功能,比如能够键入M-p以循环通过以前键入的长 SQL 语句。

我会假设你总是可以像这样以线路模式开始:

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

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

于 2010-06-05T03:54:10.793 回答
1

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

于 2010-08-17T11:39:29.540 回答
-1

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

于 2010-06-05T04:30:29.700 回答