
Я активный пользовательрыбья раковинаи мне это очень нравится.
Но есть один вопрос:
на страницеhttps://fishshell.com/docs/2.1/index.htmlесть параграф под названием«Редактор командной строки». В нем перечислено множество полезных сочетаний клавиш.
Что для меня самое интересное, этоctrl-L. Согласно описанию: "Ctrl-L очищает и перерисовывает экран". Я попробовал, и это работает так, как и хотелось. Однако оно выдает некоторые знаки, которые добавляются к предыдущему приглашению. Это можно увидеть при прокрутке назад.
Пример:
rosika@... ~/Schreibtisch> [3;J
rosika@... ~/Schreibtisch>
Вот [3;J
о чем я спрашиваю. Это [
действительно какой-то прямоугольник с (я полагаю) 4 цифрами внутри.
Может кто-нибудь сказать, почему происходит это явление? В чем оно заключается и должно ли так быть?
Заранее большое спасибо.
Привет
Росика
Моя система:
Linux/Lubuntu 16.04.4 LTS, 64 бит
рыба v. 2.2.0-3
решение1
Терминалы Unix заполняются содержимым путем интерпретации управляющих последовательностей и текста, смешанных в одном потоке. Многие символы могут быть как текстом, так и управляющим кодом, и их значение зависит от контекста.
<esc> [3;J
— одна из таких последовательностей. В неправильном контексте она печатается, в правильном контексте — часть сброса дисплея.
Более подробную информацию см. на страницах руководства termcap
, console_codes
, и .tput
решение2
Ваш эмулятор терминала не соответствует значению TERM
переменной среды. Наиболее распространенная ошибка — думать, что что-то, что не является XTerm, будет соответствовать записям termcap/terminfo с именами xterm
или xterm-new
или xterm-256color
.
Ваша запись terminfo определяет относительно новую E3
возможность (в настоящее время указанную для linux
, putty
, putty-256color
, xterm-basic
, xterm-new
, xterm
, xterm-256color
и нескольких других типов терминалов), которая сообщает программам, что есть буфер прокрутки для очистки и как его очистить. Но ваш эмулятор терминала на самом деле не поддерживает эту последовательность управления и вместо этого выводит то, что вы видите в ответ на нее. Оболочка fish выполняет команду clear
, которая теперь использует это дополнение terminfo.
Имя, указанное в значении переменной TERM
среды, должно совпадать с именем записи termcap/terminfo, которая правильно описывает работу вашего эмулятора терминала.
дальнейшее чтение
- https://unix.stackexchange.com/a/375784/5132
- https://unix.stackexchange.com/a/341619/5132
- https://unix.stackexchange.com/a/419092/5132
- https://unix.stackexchange.com/a/318297/5132
- c02y (2016-03-24).как привязать «Ctrl-l» к очистке экрана вместо очистки буфера терминала?. ошибка с панцирем рыбы № 2855. GitHub.