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

vin*_*ker 7 terminal zsh terminfo

几个 地方,我看到一些命令,以确保终端(?)处于应用程序模式,然后terminfo数据库设置/查询键绑定将起作用.

我试图找到这种应用模式是什么,但我没有成功.这个应用模式是什么?我认为没有它,Zsh可以正常运行.我对吗?在处理密钥绑定后,是否需要取消设置?一些应用程序(如基于curses的应用程序)不会解决它吗?

这只是一个问题:"什么是应用程序模式或它是如何工作的".我写了其他问题只是为了帮助你理解我的问题.

vin*_*ker 6

万一有人遇到同样的问题......经过一番研究,我在一个 prezto 的 pull request下找到了我的问题的答案。

可以总结如下:

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

注意:并非所有常见的 zsh 配置都那么强大,建议阅读前面提到的prezto 的拉取请求。

我的一些配置记录在我的博客上,并且可以在我的 git repo上找到。

  • 只有第 (2) 点在技术上看来是准确且有用的。 (2认同)