shell文本编辑器如何工作?

时间:2008-10-07 16:27:13

标签: shell text-editor

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

8 个答案:

答案 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版本以及是否配置为加载它)。