Комментарий «от верхней части экрана до текущей строки» неоднозначен. Если вы имели в виду верхнюю часть видимой части экрана, это не прокрутка . Обратная прокрутка терминала - это часть, которую вы можете увидеть только с помощью полосы прокрутки (или подходящих клавиш, таких как shift pageup).
XTerm Control Sequences документирует соответствующую escape-последовательность:
CSI Ps J Erase in Display (ED).
Ps = 0 -> Erase Below (default).
Ps = 1 -> Erase Above.
Ps = 2 -> Erase All.
Ps = 3 -> Erase Saved Lines (xterm).
Возможность описания терминала clear
использует предпоследний, например,
clear=\E[H\E[2J
, чтобы поместить курсор в верхний влево, а затем очистить весь (видимый) экран. Вы могли использовать Удалить ниже , но это не используется в описании терминала.
Относительно очистки прокрутки : Это специфическая для терминала функция, изначально escape-последовательность в xterm ( 1999 , описанная в ctlseqs.ms , но не упомянутые в изменениях) и позже ( 2011 ) реализованы как расширение для консоли Linux и соответствующее описание терминала. В базе данных терминала он указан как «разное расширение» .
В настоящее время в этих описаниях терминалов есть функция:
Вопрос о том, поддерживается ли он в аналогах xterm, таких как VTE, нужно будет проверить (нет полезной документации для VTE или Konsole).
Если вы предпочитаете не использовать расширение, вы можете удалить возможность E3
из описания терминала, которое вы используете, например,
infocmp -1x >foo
edit foo, removing the line with "E3="
tic -x foo
Я предложил использовать параметры -1
и -x
, чтобы упростить форматирование и показать возможность изменения. Пример, приведенный в https://ghostbin.com/paste/kfsbj , соответствует этому совету:
/home/flowerpick/.terminfo/x/xterm
будет может использоваться ncurses AX
и XT
- это расширенные возможности (например, E3
), показанные с параметром -x
. Если вы используете более одного типа терминала, вам придется сделать это для каждого (значение $ TERM
), и изменение применяется только к машине, на которой вы запускаете clear
.Первая пара строк вывода infocmp
показывает, над какой из них вы работаете:
# Reconstructed via infocmp from file: /home/flowerpick/.terminfo/x/xterm
xterm|xterm terminal emulator (X Window System),
Например, uxrvt
устанавливает для $ TERM
что-то вроде ] rxvt-unicode
, создавая такие строки в infocmp
:
# Reconstructed via infocmp from file: /lib/terminfo/r/rxvt-unicode
rxvt-unicode|rxvt-unicode terminal (X Window System),
Программа st
использует xterm
(или, возможно, xterm-256color
), хотя прошло некоторое время с тех пор, как я видел копию того , которая работала достаточно хорошо, чтобы давать комментарии.
Между прочим, вы могли иметь псевдоним для clear
, который отправляет заданную escape-последовательность (игнорируя описание терминала), но я не видел, чтобы кто-нибудь об этом сообщил .
Если вы хотите «очистить выше», это не так просто, как ввести «очистить». Escape \ 033 [1J
стирается из верхнего левого угла в текущую позицию курсора. Вы можете создать сценарий, который сделает это, чтобы очистить только строки над вашим текущим курсором:
hpa
) переместите вправо большое число, чашки
(адресация курсора). Кажется, что часть с отчетом о положении курсора не будет работать (например) в привязке строки чтения, поэтому я предложил сценарий.Вы могли бы сделать привязку, которая использовала бы возможности курсора сохранения / восстановления, если бы не было проблемы с нахождением в первой строке.