Readline linux что это

Readline (Русский)

Состояние перевода: На этой странице представлен перевод статьи Readline. Дата последней синхронизации: 11 июля 2021. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Readline — библиотека GNU Project, которую Bash и другие программы с CLI-интерфейсом используют для взаимодействия с командной строкой. Подробнее см. readline(3) .

Установка

Вероятнее всего, пакет readline уже установлен как зависимость Bash.

Режим редактирования

По умолчанию Readline использует для взаимодействия с командной строкой комбинации клавиш в стиле Emacs. Чтобы выбрать стиль vi, добавьте следующую строку в файл ~/.inputrc :

Если вы хотите задать этот режим только для Bash, отредактируйте ~/.bashrc :

Индикатор режима в приглашении

Редактирование в стиле vi имеет два режима: командный и вставки. Настроить отображение индикатора режима можно следующей опцией:

Теперь в вашем приглашении будет отображаться строка-индикатор (по умолчанию — (cmd) / (ins) ), которую можно модифицировать переменными vi-ins-mode-string и vi-cmd-mode-string .

Разные формы курсора для режимов

set vi-ins-mode-string \1\e[6 q\2 set vi-cmd-mode-string \1\e[2 q\2

Здесь для командного режима выбран курсор-блок, а для режима вставки — вертикальная линия. Чтобы это работало, необходимо включить индикатор режима редактирования (см. #Индикатор режима в приглашении).

В виртуальной консоли используются другие коды управляющих последовательностей, так что сначала необходимо проверить, какой терминал используется:

$if term=linux set vi-ins-mode-string \1\e[?0c\2 set vi-cmd-mode-string \1\e[?8c\2 $else set vi-ins-mode-string \1\e[6 q\2 set vi-cmd-mode-string \1\e[2 q\2 $endif

Быстрое перемещение по словам

Xterm поддерживает перемещение по словам клавишами Ctrl+Left и Ctrl+Right по умолчанию. Чтобы настроить этот эффект в других эмуляторах, выберите подходящие коды терминала и присвойте их переменным backward-word и forward-word в файле ~/.inputrc .

"\e[1;5D": backward-word "\e[1;5C": forward-word

История команд

Обычно нажатие клавиши «стрелка вверх» выводит последнюю команду вне зависимости от того, что было (частично) введено на данный момент. Более практично будет искать только те прошлые команды, которые совпадают с текущим вводом.

Читайте также:  Virtualbox общие папки linux гостевая

Например, пользователь вводил следующие команды:

Если в этой ситуации набрать ls и нажать стрелку, текущий ввод будет заменён на man mount , последнюю выполненную команду. Если поиск по истории включён, то показываться будут только прошлые команды, начинающиеся с ls (текущий ввод), в данном случае — ls /usr/src/linux-2.6.15-ARCH/kernel/power/Kconfig .

Включить режим поиска по истории можно следующими строками в /etc/inputrc или ~/.inputrc :

"\e[A": history-search-backward "\e[B": history-search-forward

Если вы используете режим vi, то добавьте следующие строки в ~/.inputrc (из этого сообщения):

set editing-mode vi $if mode=vi set keymap vi-command # для командного режима vi "\e[A": history-search-backward "\e[B": history-search-forward j: history-search-forward k: history-search-backward set keymap vi-insert # для режима вставки vi "\e[A": history-search-backward "\e[B": history-search-forward $endif

Если вы настраивали файл ~/.inputrc , то рекомендуется добавить в него ещё одну строку, чтобы избежать странных вещей вроде этой:

В качестве альтернативы можно использовать инкрементный поиск по комбинации Ctrl+R . В этом случае поиск будет вестись не по последним командам, а по похожим. Повторное нажатие Ctrl+R при работе в этом режиме отобразит предыдущую строку в буфере, совпадающую с текущей строкой поиска, а Ctrl+G отменит поиск и восстановит текущий ввод. Так, чтобы поиск шёл среди ранее выполненных команд mount , нажмите Ctrl+R , введите ‘mount’ и продолжайте нажимать Ctrl+R , пока не дойдёте до нужной команды.

Обратный (вперёд) эквивалент этого режима называется forward-search-history и привязан к комбинации Ctrl+S . Правда, в большинстве терминалов комбинация Ctrl+S переопределена на приостановку выполнения програмы до нажатия Ctrl+Q (т.н. управление выполнением XON/XOFF). Для активации forward-search-history либо отключите управление потоком выполнения:

либо назначьте в inputrc другую комбинацию. Например, можно использовать Alt+S :

Быстрое завершение

При автодополнении (tab completion) одиночное нажатие клавиши tab пытается дополнить команду. Если частичное дополнение невозможно, двукратное нажатие покажет все возможные завершения.

Читайте также:  Linux server host file

Можно изменить двойное нажатие на одиночное:

set show-all-if-unmodified on

Либо же можно настроить, чтобы такое одиночное нажатие выполняло оба действия: дополнение слова и показ всех возможных завершений, если полное дополнение невозможно:

set show-all-if-ambiguous on

Цветное завершение

Включить цветное отображение имён файлов можно опцией colored-stats . При желании можно настроить подсветку одинакового префикса в списке возможных завершений опцией colored-completion-prefix . Например:

# Цвет файла в зависимости от типа # Может вызвать мерцание текста в некоторых терминалах (например, xterm) set colored-stats On # Добавление символа для обозначения типа set visible-stats On # Пометить каталоги-ссылки set mark-symlinked-directories On # Цветовое выделение общего префикса set colored-completion-prefix On # Цветовое выделение общего префикса и завершение с помощью меню set menu-complete-display-prefix On

Макросы

Readline позволяет привязывать клавиатурные макросы на клавиши. Например, выполните эту команду в Bash:

или добавьте строку внутри одиночных кавычек в inputrc:

Теперь введите любую строку и нажмите Alt + W . Readline будет действовать как при нажатии Ctrl+E (end-of-line) с добавлением в конце строки » # macro «.

Макросы позволяют автоматизировать часто используемые идиомы. Например, добавление «| less» к строке и «нажатие» Ctrl+M (эквивалент Enter ) по комбинации Ctrl+Alt+L :

Добавление префикса ‘yes |’ по нажатию Ctrl+Alt+Y , в результате чего программа получит утвердительный ответ на любой вопрос «да/нет»:

Добавление префикса su -c » по нажатию Alt+S :

Добавление префикса sudo по нажатию Alt+S . Несколько безопаснее, чем предыдущий пример, потому что не происходит нажатия Enter :

Наконец, быстрый перевод программы в фоновый режим выполнения с удалением всего вывода по комбинации Ctrl+Alt+B .

Отключение отображения клавиши control

Readline выдаёт в терминал строку ^C при нажатия Ctrl+C . Чтобы это отключить, просто добавьте следующие строки в ~/.inputrc :

set echo-control-characters off

Смотрите также

Источник

Оцените статью
Adblock
detector