终端/zsh/terminfo中的应用程序模式是什么?

10
一些 地方,我看到了一些命令以确保终端(?)处于应用模式,然后通过terminfo数据库设置/查询键绑定将起作用。
我试图找出这个应用模式是什么,但没有成功。这个应用模式是什么?我认为Zsh可以在没有它的情况下正常运行。我是对的吗?在处理完键绑定后取消设置它是否可取?像基于curses的应用程序不会取消它吗?
这只是一个问题:“应用模式是什么或者它是如何工作的”。我写其他问题只是为了帮助您理解我的问题。
1个回答

5
如果有人遇到相同的问题... 经过一些研究,我在 prezto 的某个拉取请求 下找到了我的问题的答案。

可以总结如下:

  1. 终端是不充分和不通用的。有几种不同的协议来处理移动光标、更改颜色和处理用户的键组合输入的扩展。
  2. 有人创建了一个大型数据库来抽象不同终端和终端仿真程序之间的差异。这个数据库就是 terminfo。
  3. terminfo 只在应用程序模式下工作。特殊的转义序列被发出到终端,然后它可以改变它的模式。在新模式下,它将接受不同的转义序列(由 terminfo 知道的那些)。
  4. 如果不支持应用程序模式,则可以检测这种模式并回退到其他方法(zkbd,...)。
  5. zsh 的公共配置设置 zle(zsh 的行编辑器)在接收用户输入之前进入应用程序模式,在执行任何命令之前退出。然后所有应用程序都将继续正常运行。

注意:并非所有常见的 zsh 配置都是那么健壮的,建议阅读上述提到的 prezto 的拉取请求

我的一些配置位于我的博客我的 git 仓库中。


2
只有第二点似乎在技术上是准确和有用的。 - Thomas Dickey

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