在
several
places中,我看到一些命令以确保终端(?)处于应用程序模式,然后terminfo数据库设置/查询键绑定将起作用.
我试图找到这种应用模式是什么,但我没有成功.这个应用模式是什么?我认为没有它,Zsh可以正常运行.我对吗?在处理密钥绑定后,是否需要取消设置?一些应用程序会不会像基于curses的应用程序那样解决它?
这只是一个问题:“什么是应用程序模式或它是如何工作的”.我写了其他问题只是为了帮助你理解我的问题.
解决方法
如果有人遇到同样的问题……经过一些研究,我在
one prezto’s pull request下找到了我的问题的答案.
它可以总结如下:
>终端未指定且非通用.有几种不同的协议来处理移动光标,更改颜色和处理用户的键组合输入的扩展.
>有人创建了一个大型数据库来抽象不同终端和终端模拟器之间的差异.该数据库是terminfo.
> terminfo仅适用于应用程序模式.特殊的转义序列被发送到终端,然后它可以改变它的模式.在新模式中,它将接受不同的转义序列(terminfo已知的转义序列).
>可以检测是否支持应用程序模式,如果没有,则可以回退到其他方法(zkbd,…).
> zsh的常用配置设置zle(zsh的行编辑器)在接收用户输入之前进入应用程序模式并在执行任何命令之前退出.然后所有应用程序将继续正常运行.
注意:并非所有常见的zsh配置都非常强大,建议您阅读前面提到的prezto’s pull request.
我的配置位记录于my blog,可在my git repo获得.