![在 emacs 术语模式中,什么是字符模式和行模式?它们有何不同?](https://linux22.com/image/41250/%E5%9C%A8%20emacs%20%E6%9C%AF%E8%AF%AD%E6%A8%A1%E5%BC%8F%E4%B8%AD%EF%BC%8C%E4%BB%80%E4%B9%88%E6%98%AF%E5%AD%97%E7%AC%A6%E6%A8%A1%E5%BC%8F%E5%92%8C%E8%A1%8C%E6%A8%A1%E5%BC%8F%EF%BC%9F%E5%AE%83%E4%BB%AC%E6%9C%89%E4%BD%95%E4%B8%8D%E5%90%8C%EF%BC%9F.png)
谷歌搜索,我只能找到如何在这两者之间切换,但没有描述它们是什么。
那么,什么是字符模式和行模式?常规 shell 通常处于什么模式?
答案1
正如在您链接的页面:
在行模式下,Term 的行为基本上类似于 Shell 模式(请参阅外壳模式)。在字符模式下,每个字符都直接发送到子shell,除了术语转义字符(通常是抄送)。
在行模式下,它读取整行并允许对其进行各种 emacs 编辑操作,然后在完成后立即将其发送到进程(按Enter)。在字符模式下,只要您按下按键,每个字符都会被发送 - 处理行、编辑等取决于终端中运行的进程,例如您的 shell。
为什么您可能想使用其中一种而不是另一种?行模式允许您对编写的内容执行 Emacs 编辑操作、累积多行以一次发送,以及在 Emacs 中对文件名执行制表符补全。请参阅shell模式下的命令列表了解详情。字符模式允许您使用底层进程的所有功能,例如它自己的(可能更好)制表符补全,而不是 Emacs 操作,并且还可以发送 Emacs 会解释为引用其自己的命令的输入(例如Ctrl-X)。如果您想vim
在里面运行,这也是您想要的模式emacs
。
普通终端的操作相当于字符模式。