Я пытаюсь обернуть голову вокруг последовательностей VT102 и как работают такие библиотеки, как ncurses.xterm/vt102 последовательности, чтобы заполнить окно терминала, затем выйти на клавиатуре, очистить все, что было на экране?
Чтобы привести пример, когда я открываю Emacs, он заполняет окно терминала. Когда я нажимаю C-xC-c, программа выходит и окно моего терминала выглядит так, как было показано до того, как я запустил emacs (т. Е. Строка над моим курсором отображает команду emacs
в моей истории zsh, а не то, что предоставил emacs).
В качестве своего рода «привет мир», я написал небольшой скрипт ruby, который открывает /dev/tty
, а затем пишет \x1B[48;597m\n
(пустые строки с цветом фона) для столько строк, сколько есть в моем терминале. Затем программа спит в течение 5 секунд, и я счастливо смотрю на яркий оранжевый экран на мгновение. Затем он выходит, оставляя меня на моей zsh-подсказке, с 53 строками ярко-оранжевого цвета над ним.
Два вопроса:
- пишет пустые строки с цветом фона правильный способ, чтобы заполнить окно терминала с цветом?
- Как полностью очистить экран, отправив некоторую последовательность VT102 в/dev/tty?
Я могу отправить \x1B[2J
, но это делает то же самое, когда я выполняю команду clear
и фактические просто сдвигает все содержимое до окна терминала, пока мой курсор не находится на самом верху заготовки а не оставлять курсор везде, где это было бы естественно, если бы моя программа не написала на пустые строки пустые строки.
PS: Не знаете, какие теги следует использовать здесь, чтобы на кого-то на самом деле могли подписаться.
Удивительные, новые ключевые слова, спасибо :) '[? 1049h' и' [? 1049l' do * почти * правильные вещи, за исключением того, что курсор находится прямо в верхней части экрана после моего выхода. Я собираюсь прочитать эти расширения, которые вы упомянули. – d11wtq
Режим?1049 должен сохранять и восстанавливать курсор при его установке/сбросе - убедитесь, что вы случайно не делаете что-либо, на котором находится курсор до/после. См. Http://rtfm.etla.org/xterm/ctlseq.html для списка дополнительных контрольных последовательностей и http://vt100.net/docs/ для исходных документов DEC. – duskwuff
Оказывается, я был просто спящим и набрал «1» вместо «l»;) Большое спасибо, я на самом деле сейчас на старте и знаю, что я ищу! – d11wtq