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

hek*_*ran 11 emacs carbon-emacs

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

这是我的程序:

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

终端表现得好像我没有输入任何东西.它只是返回提示.

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

Sea*_*ean 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.

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

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

(add-hook 'term-mode-hook 'term-line-mode)
Run Code Online (Sandbox Code Playgroud)

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