8

我是编程新手,但我想知道诸如 vim、emacs、nano 等 shell 文本编辑器是如何控制命令行窗口的。我主要是一名 Windows 程序员,所以在 *nix 上可能有所不同。据我所知,只能将文本打印到控制台并要求输入。文本编辑器如何在命令行环境中创建可导航、可编辑的窗口?

4

8 回答 8

10

通过使用以下库,而这些库又使用转义字符序列

姓名
       ncurses - CRT 屏幕处理和优化包

概要
       #包括

描述
       ncurses 库例程为用户提供了一个独立于终端的
合理优化更新人物画面的方法。这
实施是“新诅咒”(ncurses)并且是批准的替代品
用于 4.4BSD 经典的 curses,已停产。

[……剪断……]

       ncurses 包支持:整体屏幕、窗口和垫
操纵;输出到 windows 和 pads;阅读终端输入;控制
通过终端和诅咒输入和输出选项;环境查询
例行公事;颜色处理;使用软标签键;terminfo 能力;
并访问低级终端操作例程。

于 2008-10-07T16:33:01.987 回答
6

简短的回答:有它的库(如诅咒,俚语)。

更长的答案:通过打印特殊字符序列(称为转义序列,因为它们以 ESC 字符开头)来完成诸如用光标跳转或更改颜色之类的操作。

于 2008-10-07T16:29:29.170 回答
4

了解ncurses可能是一个很好的起点。

于 2008-10-07T16:28:16.053 回答
4

有一个基于“VT100”终端的称为 vt100 的旧协议。它使用以 escape 开头的代码来控制光标位置、颜色、清除屏幕等。

这也是您获得彩色提示的方式。

Google VT100 或“终端转义码”

编辑:我为你搜索了它:http ://www.termsys.demon.co.uk/vtansi.htm

于 2008-10-07T16:28:51.263 回答
3

如果您在 Windows 命令行控制台中键入“edit”,您也会注意到这一点。这个“特性”并不是类unix系统所独有的,尽管以这种方式操作windows控制台的概念与unix中的完全不同。

于 2008-10-07T16:33:35.323 回答
2

在 Unix 系统上,控制台窗口模拟一个古老的串行终端(通常是VT100)。您可以打印特殊控制字符和转义序列来移动光标、更改颜色和执行其他特殊效果。有一些库可以帮助处理细节;ncurses是最受欢迎的。

在 Windows 上,[Win32 控制台 API]( http://msdn.microsoft.com/en-us/library/ms682073(VS.85%29.aspx)提供了类似的功能,但方式却截然不同。

于 2008-10-07T16:48:14.030 回答
2

在命令行输入“c:\winnt\system32\edit”或“c:\windows\system32\edit”,您将看到一个命令行文本编辑器。

人们对用于控制命令屏幕的 ESC 字符大多是正确的,但一些较旧的程序也将字符直接写入 Windows 命令行屏幕使用的内存空间。

为了控制命令行窗口,您过去必须编写自己的窗口窗体、输入框、菜单等。您还必须将所有这些封装在一个大循环中以处理事件。

于 2008-10-07T16:54:41.303 回答
0

更具体的 Windows 命令行,该应用程序通常调用执行相同操作的 DOS 或 BIOS 函数。有时 ANSI 命令代码支持可用,有时则不可用(取决于确切的 MS 操作系统版本以及是否配置为加载它)。

于 2008-10-07T16:38:24.877 回答