Emacs:终端和Shell有什么区别?

19

我一直在阅读如何在EMACS中使用shell,期间发现终端的概念,它是与shell进行交互的旧物理设备的抽象。
但现在,我真的不明白使用它的好处是什么,因此,您能否举出一些情况或示例,在这些情况下应该使用终端而不是在Emacs中使用shell?


1
Shell非常方便,因为通常的emacs功能(比如isearch)在其中按预期工作。 - Tom
4个回答

18

运行一个术语缓冲区更接近于一个实际的终端。以下是一些差异:

  • Shell模式提供非常有限的终端仿真。利用终端全屏能力的程序(例如lessmtrmutttop)将无法正常工作。终端模式通常可以处理这些问题。
  • 在Shell模式下,Emacs提供了标签补全。在终端模式下,shell或命令行程序自己提供补全功能。
  • Shell模式缓冲输入并在换行时将其发送到进程。终端模式会立即将字符发送到运行中的进程。
  • Shell模式类似于普通缓冲区,具有常规的emacs键绑定。终端模式不会拦截大多数控制字符,除非您将其明确放入行模式。

4

Shell就像另一个Emacs缓冲区,因此在其中使用的键与其他缓冲区中使用的键相同。但这并不适用于终端。


2
您可以在终端中启动清除屏幕的控制台程序,例如mc

2

物理终端已经过时,但替代它们的终端仿真器非常重要,我认为除了Emacs之外的大多数shell都是在其中运行的,因此在Emacs中使用一个终端仿真器并不是什么神秘的概念。

这只是与您的问题相关的次要问题,但《TTY解密》是一篇很好的文章,您可能会从中获得启发。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接