2008-10-07 84 views
7

我在編程方面相當新,但我想知道shell如vim,emacs,nano等的文本編輯器如何能夠控制命令行窗口。我主要是Windows程序員,所以在* nix上可能會有所不同。據我所知,只能將文本打印到控制檯,並要求輸入。文本編輯器如何在命令行環境中創建可導航,可編輯的窗口?shell文本編輯器如何工作?

+0

在Windows Shell中製作文本編輯器:只需下載現在免費的Visual Basic dos 1,就可以輕鬆製作一個edit.com克隆。 - 或者 - 對於那些想在* nix/bsd/osx場景中編輯的人:ncurses有一個很好的方法來做到這一點,使用'pads'來保存整個文檔(或者在緩衝之前保存它在內存中的最大數量),這允許你基本上將緩衝區的'窗口'複製到屏幕上,甚至可以滾動它,輸入文本等。一本好書可以閱讀:NCurses程序員指南ISBN 978-0470107591(ncurses比LOT更容易你可能會認爲!) – osirisgothra 2015-05-05 11:02:30

回答

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. 

3

有一個基於「VT100」終端的稱爲vt100的舊協議。它使用以escape開始的代碼來控制光標位置,顏色,清除屏幕等。

這也是您如何獲取彩色提示。

谷歌VT100或 「終端轉義碼」

編輯:我Google爲你:http://www.termsys.demon.co.uk/vtansi.htm

5

簡短的回答:有吧庫(比如詛咒,俚語)。

較長的答案:通過打印特殊字符序列(稱爲escape-secquences,因爲它們以ESC字符開頭)來完成諸如使用光標跳轉或更改顏色等操作。

3

如果您在Windows命令行控制檯輸入「編輯」您還會注意到這下面。這個「特性」並不是unix類系統所獨有的,儘管用這種方式操縱windows控制檯的概念與unix中的完全不同。

0

更多Windows命令行特定的應用程序通常會調用DOS或BIOS功能。有時ANSI命令代碼支持可用,有時不支持(取決於確切的MS操作系統版本以及是否配置爲加載它)。

2

在Unix系統上,控制檯窗口模擬古老的串行終端(通常是VT100)。您可以打印特殊控制字符和轉義序列來移動光標,更改顏色和執行其他特殊效果。有些圖書館可以幫助處理細節; ncurses是最受歡迎的。

在Windows中,[Win32控制檯API](http://msdn.microsoft.com/en-us/library/ms682073(VS.85%29.aspx)提供類似的功能,但在一個相當不同的方式

2

鍵入 「C:\ WINNT \ SYSTEM32 \編輯」。或「c:\ Windows \ System32下\編輯「命令行,你會看到一個命令行文本編輯器

人們大多是正確的ESC字符被用來控制命令屏幕,但一些較早的程序也直接寫字符到內存Windows命令行屏幕使用的空間

爲了控制命令行窗口,你以前必須編寫自己的窗口窗體,輸入框,菜單等。你還必須將所有這些都放在一個大循環中以處理事件。