Я случайно набрал ctrl+ Lв терминале, и мое окно терминала подскочило на один «экранный» размер. Я посмотрел на сочетания клавиш в «Редактировать» -> «Сочетания клавиш» и не нашел этого сочетания клавиш.
Что делает ctrl+ Lи где это определено?
Я случайно набрал ctrl+ Lв терминале, и мое окно терминала подскочило на один «экранный» размер. Я посмотрел на сочетания клавиш в «Редактировать» -> «Сочетания клавиш» и не нашел этого сочетания клавиш.
Что делает ctrl+ Lи где это определено?
ctrl+ Lпросто очистить экран терминала.
Это сочетание клавиш, эквивалентное команде clear -x
. ссылка
Это свойство bash
, так что вы не нашли его под сочетаниями клавиш в вашем gnome-терминале. От man bash
:
clear-screen (C-l)
Clear the screen leaving the current line at the top of the
screen. With an argument, refresh the current line without
clearing the screen.
Смотрите подробный список сочетаний клавиш Bash .
clear
, потому что она не стирает вашу историю терминала, в то время как командаclear
делает, если вы не добавите-x
аргумент, так как:clear -x
.Если используемая вами оболочка не перехватывает ее, вы вводите символ «Форм подачи» в своем терминале. Если приложение терминала не перехватывает или не использует какое-либо нажатие клавиши, Ctrl+ Letter переводится в код ASCII буквы минус 64 (1). 65 - это ASCII-код «A», «L» - 12-я буква -> код 76. Если оболочка не знает, что делать с кодом, она печатает его.
Печать FF-символа привела к появлению новой страницы на линейном принтере и чистому экрану на терминале (да, тогда я использовал VT-52 со скоростью 300 бод).
Так что Ctrl+ L12, что FF. Точно так же Ctrl+ I- это TAB, и Ctrl+ Gзвонит в колокол ---, если терминал или оболочка не перехватывает его, как, например, Ctrl+ C.
Обратите внимание , с другой ответ: кажется , что Баш делать перехват CTRL- Lи делать
clear
. Приятно отметить, чтоbash
авторы связали ключ с командой, которая будет делать более или менее то же самое, что код ASCII делал на старых терминалах!С другой стороны, в моем
zsh
сочетании CTRL- Iработает как TABи CTRL- Hкак Backspace(2).Старый хороший ASCII ... (обратите внимание, что буква L находится в столбце 4, строке 12, она имеет код ASCII 4 * 16 + 12 = 76).
Исходное изображение здесь , из статьи в Википедии об ASCII .
Примечания:
(1) Ctrlдействительно используется, чтобы очистить бит 7.
(2) это источник шутки «не удаётся удалить слово», которую вы когда-нибудь находите, например, «это была плохая ^ H ^ H ^ не такая хорошая идея» ... (обычно слово сильнее, чем плохое!)
источник
^H
s или^W
s удобна, когда вы не можете использовать зачеркивания. :)Control-L
перехвачен и интерпретируется Баш ( на самом деле с помощью вreadline
библиотеке , которая обрабатывает интерактивное редактирование в командной строке). Это связано сclear-screen
функцией, как писал @souravc.Обратите внимание на значение
Control-L
: он определен как подача формы в таблице символов ASCII, но это ничего не значит, если какая-то программа не интерпретирует его соответствующим образом. Терминал не очищает экран, когда видит канал формы, что можно проверить, сохранив ^ L в файле и напечатав его с помощьюcat
. Когдаbash/readline
видит^L
, он выполняетclear-screen
функцию. Это отправляет последовательность символов, понятную вашему эмулятору терминала (как описано в termcap или terminfo), и дает эффект очистки экрана.В очень старых принтерах, a
^L
продвигает бумагу, начинающую печатать на следующем листе, отсюда и название «подача формы». Но современные терминалы и эмуляторы терминалов следуют более новому стандарту ANSI, в котором управляющими командами являются многосимвольные «escape-коды», которые начинаются с^[
(escape). Когда bash видит вас^L
, он, вероятно, отправляет последовательность из двух командESC [ H ESC [ J
, которая перемещается в верхний левый угол экрана и очищает все, что находится под ним (отсюда и весь экран).источник
ESC [ ESC [ J
также очищает историю команд, аCTRL + L
последовательность - нет. Последовательность отсылаются терминалу скорееESC [ H ESC [ 2 J
, идти вперед попробуйте сами с этой командой:printf "\033[H\033[2J"
.Как все уже хорошо объяснили, что такое Ctrl+ Lи что делает, но никто не объяснил, как «отменить» команду, вот несколько команд, которые вы можете набрать, чтобы вернуть вас к тому, что вы делали:
даст вам последние 20 команд, которые вы ввели.
даст вам последние 20 строк вывода любой установки пакета, которую вы выполняли
источник