Первоначально я думал, что Неограниченная прокрутка не работала с терминальным приложением на 16,04. У меня есть опция, "ограничивают scrollback" непроверенным. Несколько раз это прокручивает назад несколько раз, это не делает. Затем я понял, что это не прокручивает назад, когда когда-либо я использую clear
команда. Это прокручивает назад только одну каменистую осыпь.
Я использую ясный много (почти однажды в каждых 3 командах).
Страница справочника для ясных точек к terminfo. Существуют некоторые опции на terminfo, но я не могу найти файл конфигурации, где я могу определить опции. Все файлы под/lib/terminfo/от, где ясный, кажется, читают, его конфигурация находятся в скомпилированном формате, и я не понимаю их.
Я не видел эту проблему с ранее к 14,04 (предположение).
Любая справка значительно ценится.
Спасибо.
Вместо CTRL+L наберите clear
.
Это отправит "Form Feed" на клемму. В основном, она будет перемещать все вверх по высоте терминального окна, очищая экран, не влияя на вашу прокрутку.
Это заняло некоторое время, так что, думаю, я должен поделиться, как я заставил это работать.
Если вы наберете "man clear", вы увидите, что в руководстве указано, что это состояние:
очищает экран, если это возможно, включая его буфер прокрутки (если определена расширенная возможность "E3").
Мы собираемся убрать эту возможность "E3":
Сначала выясните тип вашего терминала:
echo $TERM
Для меня это привело к "xterm-256color". Что бы это ни было, запомните это.
Теперь введите команду:
infocmp -x xterm-256color > tempfile
Где вы, очевидно, замените xterm-256color на вывод из первой команды. Это выведет расширенные возможности для данного типа терминала в 'tempfile'.
Теперь отредактируйте этот только что созданный файл. Вы ищете:
E3=\E[3J,
Найдите его и просто удалите. Всё это, так что если это выглядело так:
...
Cs=\E]12;%p1%s\007, E3=\E[3J,
Ms=\E]52;%p1%s;%p2%s\007, Se=\E[2 q, Ss=\E[%p1%d q,
...
Теперь это должно выглядеть так:
...
Cs=\E]12;%p1%s\007,
Ms=\E]52;%p1%s;%p2%s\007, Se=\E[2 q, Ss=\E[%p1%d q,
...
Сохраните файл. И из терминала выполните:
sudo tic -x tempfile
Это загрузит измененную терминальную информацию и сохранит ее. перезагрузите терминал и очистите его от скроллбуфера
@heemayl и @bashBedlam Спасибо.
CTRL+L делает то, что я хочу. Но я привык все время печатать чисто. Поэтому я вроде как работал над этим, копируя /lib/xterm/x/{xterm, xterm-256color} из ubuntu 12.04. Есть переменная окружения с именем $TERM, которая хранит этот файл.
Затем я прочитал ваш ответ и попробовал CTRL+L, и она сработала. Мне стало любопытно и я пытался посмотреть, смогу ли я поместить CTRL+L в скрипт и не получил где. Потом я вспомнил, что Стрэйс может дать мне то, что я хочу. Поэтому я запустил strace clear
и обнаружил, что он пишет "\33[H\33[2J]", чтобы очистить экран. Так что я написал питоновый онелинер...
распечатайте("\33[H\33[2J") и поместите его в файл и добавьте ссылку с именем clear, чтобы указать на него. Теперь у нас 2 обходных пути.
Мне до сих пор интересно, как можно читать и изменять файлы терминов.
Еще раз спасибо.
Этот ответ основан на ответе ската (над которым он неплохо поработал) и предназначен для его завершения.
1 - Чтобы очистить без потери прокрутки, введите следующая команда в консоли (нет необходимости в python, как предлагается в ответе на строковый массив):
printf '\33[H\33[2J'
2 - Чтобы не запоминать это, вы можете отредактировать файл .bashrc, чтобы создать для него псевдоним. Я бы назвал псевдоним ясным. В bash введите:
nano ~/.bashrc
И добавьте эту строку в конец:
alias clean="printf '\33[H\33[2J'"
Мне также нравится добавлять div (для разделителя):
alias div='echo;echo "------------------------------------------------------------------------------";echo;echo;echo;echo;echo;echo;echo;echo;echo;echo;echo;echo "------------------------------------------------------------------------------";clean'
Это делает так, что когда вы выполняете команду div, она вводит два разделителя с Между ними 10 новых строк, за которыми следует чистая команда. Это сделает так, что при прокрутке назад вы точно знаете, где использовали div.
Вы можете изменить поведение sudo bash, выполнив sudo su перед процедурой, которую я перечислил.
Я бы рекомендовал это вместо bashBedlam's ответ использования tic, как редактирования .bashrc:
1) он не требует прав sudo и может быть легко использован на ходу.
2) влияет только на вашего пользователя (не все пользователи захотят модифицированную функцию очистки )
3) сохранит обновления, которые обычно не касаются bashrc
Краткий ответ : Если у вас относительно новее версия clear
, вы можете избежать очистки буфера прокрутки с помощью параметра -x
.
Длинный ответ :
clear
command является частью ncurses
.
Согласно журналу изменений ,
20130622
+ модифицируйте программуclear
, чтобы учесть расширенный E3
возможность очистки буфера обратной прокрутки терминала (патч от
Мирослав Личвар, Redhat # 815790).
таким образом, предположение ОП
Я не видел этой проблемы ранее, до 14.04 (предположение).
может быть прав. В журнале изменений также указано
20170819
+ добавить параметр-x
для очистки / tput, чтобы сделать расширение E3 необязательным
(cf: 20130622).
Таким образом, вы можете использовать опцию -x
, если дата выпуска ncurses
равна или новее, чем 2017-08-19. Это можно проверить командой clear -V
. Например,
$ clear -V
ncurses 6.1.20180127
, и это можно читать как « ncurses 6.1
, выпущенный 27.01.2018».
Я подтвердил, что насколько я использую официальные репозитории, процедура действительна на
Arch Linux
Arch Linux ARM
Linut Mint 19
Ubuntu 20.04
Raspbian Buster Lite
и недействителен на
Raspbian Stretch Lite
(старше, чем ] Buster
.) Как упоминалось выше, clear -x
помогает.
Однако, если вы похожи на меня и обычно набираете clear
сотни раз в день, не надеясь вывести из строя пальцы, вы можете создать простой псевдоним в .bashrc
(или эквивалент), например: alias clear = 'clear -x'
.