问题 将文本移入Emacs中运行的终端


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

这是我的程序:

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

终端表现得好像我什么也没输入。它只是返回提示。

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


3129
2018-06-05 03:39


起源



答案:


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

附录:

在没有离开char模式的情况下,Yanking文本有点棘手;然而,相关的功能是 term-paste (不 yank,它只是将文本插入终端缓冲区而不将其发送到下级进程)。 term-paste 会立即将最近的杀戮发送到劣质过程,但不会提供您可能习惯的花式猛拉功能(如 M-ÿ 循环通过先前的杀戮)。你可以跑 term-paste 作为扩展命令: C-c M-x术语粘贴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)

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


15
2018-06-05 03:54



有没有办法让终端模拟器接受抽奖而不需要整个缓冲区可编辑?或者有没有办法将终端仿真器配置为始终以 line run。 - hekevintran
感谢C-c C-j。 Emacs太棒了! - Raj


答案:


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

附录:

在没有离开char模式的情况下,Yanking文本有点棘手;然而,相关的功能是 term-paste (不 yank,它只是将文本插入终端缓冲区而不将其发送到下级进程)。 term-paste 会立即将最近的杀戮发送到劣质过程,但不会提供您可能习惯的花式猛拉功能(如 M-ÿ 循环通过先前的杀戮)。你可以跑 term-paste 作为扩展命令: C-c M-x术语粘贴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)

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


15
2018-06-05 03:54



有没有办法让终端模拟器接受抽奖而不需要整个缓冲区可编辑?或者有没有办法将终端仿真器配置为始终以 line run。 - hekevintran
感谢C-c C-j。 Emacs太棒了! - Raj


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


1
2017-08-17 11:39





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


-1
2018-06-05 04:30



文本进入缓冲区,但点击返回不会将其发送到终端。因此,在您尝试运行命令并且它不执行任何操作之前,所有内容都是正确的。 - hekevintran