Ctrl + L в терминале

По умолчанию xfce содержит как минимум два набора комбинаций клавиш для переключения рабочих областей.

Ctrl-Alt-Numpad переместит активное окно на номер рабочей области, нажатый на цифровой клавиатуре. Ctrl-Func переместится в рабочее пространство, обозначенное нажатым номером функциональной клавиши, оставив активное окно позади.
1
задан 14 March 2014 в 21:16

3 ответа

Если оболочка, которую вы используете, не перехватывает ее, вы вводите символ «Form-feed» в своем терминале. Если приложение терминала не перехватывает или не использует какое-либо нажатие клавиши, Ctrl + Letter переводится в код ASCII буквы минус 64 (1). 65 - код ASCII 'A', 'L' - это 12-я буква -> код 76. Если оболочка не знает, что делать с кодом, она печатает ее.

Печать символа FF привела к появлению новой страницы на линейном принтере и четкому экрану на терминале (да, я тогда использовал VT-52, при 300 бодах).

Итак, Ctrl + L равно 12, что является FF. Точно так же Ctrl + I - TAB, а Ctrl + G - звонок, если терминал или оболочка не перехватывают его, например, Ctrl + C.

Обратите внимание на другой ответ: кажется, что bash перехватывает CTRL-L и делает clear. Приятно заметить, что авторы bash связали ключ с командой, которая будет делать более или менее то же самое, что код ASCII сделал на старых терминалах!

С другой стороны, в моей zsh комбинация CTRL-I работает как Ctrl и CTRL-H как Backspace (2).

Старый хороший ASCII ... (обратите внимание, что буква L находится в столбце 4, строка 12, имеет ASCII-код 4 * 16 + 12 = 76).

Оригинальное изображение VT-52 , из статьи Википедии по ASCII.

Сноски:

(1) Backspace действительно используется для очистки бит 7.

(2) это источник «не удалять слово», вы когда-нибудь находите, например, «это было плохо» H ^ H ^ Hnot такая хорошая идея »... (обычно это слово сильнее, чем плохо!)

16
ответ дан 24 May 2018 в 10:48
  • 1
    Ницца. Как я могу использовать эту схему? Я вижу, что буква L находится в строке 12 и столбце 4. Затем я просто минус 32 из 124 или как вы вычисляете код ASCII? – Parto 14 March 2014 в 21:35
  • 2
    @AvatarParto ups, написал 32 вместо 65. Ответ исправлен. Таблица является двоичной, поэтому код - столбец * 16 + строка. – Rmano 14 March 2014 в 21:52
  • 3
    Вставка букв ^H s или ^W s хороша, если вы не можете использовать зачеркивания. :) – Blacklight Shining 15 March 2014 в 05:47

Control-L перехватывается и интерпретируется bash (фактически библиотекой readline, которая обрабатывает интерактивное редактирование в командной строке). Он связан с функцией clear-screen, как писал @souravc.

Замечание о значении Control-L: оно определено как Feed формы в таблице символов ASCII, но это ничего не значит, если какая-либо программа не интерпретирует его соответствующим образом. Терминал не очищает экран, когда видит канал формы, как вы можете проверить, сохраняя ^ L в файле и печатая файл с помощью cat. Когда bash/readline видит ^L, он выполняет функцию clear-screen. Это отправляет последовательность символов, которая понимается вашим эмулятором терминала (как описано termcap или terminfo), и имеет эффект очистки экрана.

В очень старых принтерах ^L будет продвигать бумага начинает печать на следующем листе, отсюда и название «feed feed». Но современные терминалы и терминальные эмуляторы следуют новому стандарту ANSI, в котором управляющие команды представляют собой многосимвольные библиотеки readline , которые начинаются с ^[ (escape). Когда bash видит ваш ^L, возможно, он отправляет последовательность из двух команд ESC [ H ESC [ J, которая перемещается в верхнюю левую часть экрана и очищает все под ней (отсюда весь экран).

7
ответ дан 24 May 2018 в 10:48

Как все хорошо объяснили, что такое Ctrl + L, но никто не объяснил, как «отменить» команду, вот несколько команд, которые вы можете ввести, чтобы вернуть вас к тому, что вы делали:

history

предоставит вам последние 20 команд, которые вы набрали.

tail --lines=20 /var/log/dpkg.log

предоставит вам последние 20 строк вывода любой установки пакета, которую вы выполняли

0
ответ дан 24 May 2018 в 10:48

Другие вопросы по тегам:

Похожие вопросы: