MC6*_*020 21
vim 和其他半图形(能够显示半图形字符,例如角、全十字\xe2\x80\xa6)应用程序控制终端(管理光标位置、可显示字符的位置、颜色设置\xe2 \x80\xa6) 通过发送专用转义序列和控制代码,终端将其转换为将执行的某些专用操作。
\n因为对于任何程序员来说,将转义序列回显到标准输出都是一场噩梦,更不用说意味着不可移植的代码,因为总是有许多不同的终端具有不同的功能和不同的转义序列,
\n创建了一个抽象所有这些工作的库:curses。现在命名为ncurses,它还提供更高级别的功能,例如窗口管理。
\nncurses 依赖terminfo数据库来获取适当的终端功能描述。
\n正是由于这个函数库,vim、iptraf-ng、alsa amixer、less、gdb、主要内核配置实用程序和许多其他工具才能控制终端。
\n请注意,这些应用程序通常不称为“命令行”实用程序,它们通常通过基本的光标管理和编辑工具处理单行输入,这要归功于readline库。
\n相比之下,正如您在ncurses
上面链接的手册页中所读到的那样,这些程序可以称为:交互式、面向屏幕。 与面向行的编辑器相比,vim
通常称为面向屏幕的编辑器。ed
请注意评论中的以下建议:
\n启动时,应用程序将从启动它的 shell 继承 tty 驱动程序设置,这些设置可能与原始 Agetty 最初设置的设置非常相似。
\n这包括缓冲输入直到捕获换行符、在即时光标位置回显输入键\xe2\x80\xa6 以及面向屏幕的应用程序不太可能需要的所有功能
初始化时,程序将保存当前的 tty 驱动程序设置并根据程序员的意愿强制执行这些设置。
\n在退出\xe2\x80\xa6之前,强烈建议程序员恢复初始设置\xe2\x80\xa6,除非面临在相当不可预测但肯定混乱的情况下返回调用shell的风险\xe2\x80\xa6