2008-10-07 2 views
7

Я довольно новичок в программировании, но я задался вопросом, как текстовые редакторы оболочки, такие как vim, emacs, nano и т. Д., Могут управлять окном командной строки. Я в первую очередь программист на Windows, поэтому, возможно, он отличается от * nix. Насколько мне известно, распечатать текст можно только на консоль и запросить ввод. Как текстовые редакторы создают навигационное, редактируемое окно в среде командной строки?Как работают текстовые редакторы?

+0

Создание текстового редактора в Windows Shell: просто скачайте теперь бесплатный визуальный базовый dos 1, вы можете легко сделать клон edit.com с этим.-OR- Для тех, кто хочет создавать редакторы в сценариях * nix/bsd/osx: ncurses имеет прекрасный метод для этого, используя «пэды» для хранения всего документа (или для хранения наибольшей суммы, которую он может в памяти до буферизации), это позволяет по существу копировать «окно» буфера на экран и даже прокручивать его, вводить текст и т. д. Хорошая книга для чтения: Руководство для программистов для 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». Он использовал коды, начиная с выхода, чтобы управлять позицией курсора, цветом, очисткой экрана и т. Д.

Это также, как вы получаете цветные подсказки.

Google VT100 или "Коды терминальные побег"

редактировать: Я Googled это для вас: http://www.termsys.demon.co.uk/vtansi.htm

5

Короткий ответ: есть библиотеки для него (например, проклятий, жаргонные).

Более длительный ответ: выполнение таких действий, как прыжок с помощью курсора или изменение цвета, осуществляется путем печати специальных последовательностей символов (называемых escape-secquences, поскольку они начинаются с символа ESC).

3

Вы также заметите это, если вы наберете «изменить» в командной строке консоли Windows. Эта «особенность» не уникальна для unix-подобных систем, хотя концепции для управления консолью Windows таким образом сильно отличаются от Unix.

0

Дополнительная спецификация командной строки Windows, приложение обычно вызывает функции DOS или BIOS, которые делают то же самое. Иногда доступна поддержка кода кода ANSI, иногда это не так (в зависимости от точной версии MS OS и того, настроена ли она для ее загрузки).

2

В системах Unix консольное окно эмулирует старинный последовательный терминал (обычно VT100). Вы можете печатать специальные управляющие символы и escape-последовательности для перемещения курсора, изменения цветов и других специальных эффектов. Есть библиотеки, которые помогут справиться с деталями; ncurses - самый популярный.

В Windows, то [Win32 Console API] (http://msdn.microsoft.com/en-us/library/ms682073(VS.85%29.aspx) обеспечивает аналогичную функциональность, но в несколько иной манере

2

Тип "C: \ WINNT \ system32 \ редактировать". Или «C: \ WINDOWS \ system32 \ отредактируйте "в командной строке, и вам будет показан текстовый редактор командной строки.

Люди в основном имеют право на символ ESC, используемый для управления экраном команды, но некоторые старые программы также записывают символы непосредственно в память пространство, используемое на экране командной строки Windows.

Для управления окном командной строки, лет u обычно приходилось писать собственные формы окон, поле ввода, меню и т. д. Вам также пришлось бы обернуть все это в большой цикл обработки событий.