我在编程方面相当新,但我想知道如何将shell文本编辑器(如vim,emacs,nano等)控制命令行窗口。我主要是Windows程序员,所以也许在* nix上有所不同。据我所知,只能将文本打印到控制台,并要求输入。文本编辑器如何在命令行环境中创建可导航,可编辑的窗口?
答案 0 :(得分:9)
通过使用以下库,而这些库又使用转义字符序列
NAME ncurses - CRT screen handling and optimization package SYNOPSIS #include DESCRIPTION The ncurses library routines give the user a terminal-independent method of updating character screens with reasonable optimization. This implementation is ‘‘new curses’’ (ncurses) and is the approved replacement for 4.4BSD classic curses, which has been discontinued. [...snip....] The ncurses package supports: overall screen, window and pad manipulation; output to windows and pads; reading terminal input; control over terminal and curses input and output options; environment query routines; color manipulation; use of soft label keys; terminfo capabilities; and access to low-level terminal-manipulation routines.
答案 1 :(得分:5)
简短的回答:有它的库(如诅咒,俚语)。
更长的答案:通过打印特殊字符序列(称为转义 - 序列,因为它们以ESC字符开头)来完成诸如使用光标跳转或更改颜色等操作。
答案 2 :(得分:3)
了解ncurses可能是一个很好的起点。
答案 3 :(得分:3)
有一种基于“VT100”终端的旧协议vt100。它使用以escape开头的代码来控制光标位置,颜色,清除屏幕等。
这也是你得到彩色提示的方式。
Google VT100或“终端转义码”
编辑:我用Google搜索了它:http://www.termsys.demon.co.uk/vtansi.htm
答案 4 :(得分:3)
如果在Windows命令行控制台中键入“edit”,您也会注意到这一点。这个“特性”并不是类Unix系统所独有的,尽管以这种方式操作Windows控制台的概念与unix非常不同。
答案 5 :(得分:2)
在Unix系统上,控制台窗口模拟古老的串行终端(通常为VT100)。您可以打印特殊控制字符和转义序列以移动光标,更改颜色和执行其他特殊效果。有图书馆可以帮助处理细节; ncurses是最受欢迎的。
在Windows上,[Win32控制台API](http://msdn.microsoft.com/en-us/library/ms682073(VS.85%29.aspx)提供了类似的功能,但方式却截然不同。
答案 6 :(得分:2)
在命令行输入“c:\ winnt \ system32 \ edit”或“c:\ windows \ system32 \ edit”,您将看到一个命令行文本编辑器。
人们对用于控制命令屏幕的ESC字符大多是正确的,但是一些较旧的程序也将字符直接写入Windows命令行屏幕使用的内存空间。
为了控制命令行窗口,您以前必须编写自己的窗口表单,输入框,菜单等。您还必须将所有这些包装在一个大循环中以处理事件。
答案 7 :(得分:0)
更多Windows命令行特定,应用程序通常调用执行相同操作的DOS或BIOS功能。有时ANSI命令代码支持可用,有时则不支持(取决于确切的MS OS版本以及是否配置为加载它)。