Как использовать код vt100 в Windows

Я пытаюсь переместить курсор в консоли.

И я узнаю, что код vt100 может это сделать.

#include<stdio.h>
int main()
{
    printf("123456789\n");
    printf("\033A");
    printf("abcdefghi\n");
    return 0;
}

Его выход не такой, как планировалось. это то, что приведенный выше код печатает в консоли.

Во второй строке перед буквой "А" есть маленькая стрелочка, ее нельзя вставить в сеть.

123456789
Aabcdefghi

Как использовать код vt100 при программировании в Visual Studio в Windows?


person yck    schedule 18.04.2013    source источник
comment
В DOS драйвер ANSI.SYS отвечал за интерпретацию управляющих последовательностей терминала. В Windows может помочь следующее: github.com/adoxa/ansicon   -  person Axel Kemper    schedule 18.04.2013


Ответы (2)


Не все платформы Windows поддерживают VT100. Только для Windows 10 и более поздних версий (вы можете заметить, что в PowerShell есть цвета).

Если вы используете Windows 10, вы запускаете свой код выше, и он не работает; значит вы его не активировали (по умолчанию не включается).

Существует кросс-платформенный метод (когда вам не нужно использовать специальные функции Windows, чтобы начать работу).

Вам просто нужно вызвать system(" ") перед вашими управляющими кодами:

#include<stdio.h>
#include <stdlib.h> // Library for system() function

int main()
{
    system(" "); // Start VT100 support

    printf("123456789\n");
    printf("\033A"); // And you are away :)

    printf("abcdefghi\n");
    return 0;
}

Или вы можете использовать SetConsoleTextAttribute(), чтобы активировать VT100, как описано здесь


Дополнительную информацию о последовательностях виртуального терминала консоли можно найти от Microsoft Документация:

Поведение следующих последовательностей основано на VT100 и производных технологиях эмулятора терминала, в частности на эмуляторе терминала xterm. Дополнительную информацию о терминальных последовательностях можно найти по адресу http://vt100.net и по адресу http://invisible-island.net/xterm/ctlseqs/ctlseqs.html.


Этот пост также кажется полезным, поскольку он описывает различные способы для запуска VT100

person Simon    schedule 01.07.2018

Коды VT100 не будут работать в обычной консоли Windows. Вам понадобится программа эмуляции терминала.

Эта страница, похоже, утверждает, что поддерживает vt100. Но я не могу лично подтвердить это. И не могу найти ссылку.

Вероятно, это излишне, но Cygwin включает в себя X-сервер, с помощью которого вы можете запускать Xterm, который поддерживает коды vt100.

person luser droog    schedule 18.04.2013
comment
Начиная с Windows 10, он работает (поместите VT100 в их терминалы), вам просто нужно его инициализировать. - person Simon; 01.07.2018
comment
Это интересно, если у вас есть справочный или примерный код, это будет хорошим ответом. В то время я не мог найти ничего, и у меня нет особой мотивации исследовать банкомат. - person luser droog; 01.07.2018