Синтаксис файла инициализации Readline
В файле инициализации Readline разрешены только несколько основных конструкций. Пустые строки игнорируются. Строки, начинающиеся с '#', являются комментариями. Строки, начинающиеся с '$', указывают условные конструкции (см. Условные конструкции инициализации). Другие строки обозначают настройки переменных и привязки клавиш.
- Настройки переменных
-
Вы можете изменить поведение Readline во время выполнения, изменив значения переменных в Readline, используя команду
setв файле инициализации. Синтаксис прост:set variable value
Например, вот как переключиться от стандартной привязки клавиш в стиле Emacs к использованию
viкоманд редактирования строки:set editing-mode vi
Имена и значения переменных, где это возможно, распознаются без учета регистра. Нераспознанные имена переменных игнорируются.
Булевы переменные (те, которые могут быть установлены в включённое или выключенное состояние) устанавливаются в включённое состояние, если значение равно null или пустое, on (без учета регистра) или 1. Любое другое значение приводит к тому, что переменная устанавливается в выключенное состояние.
Команда
bind -Vотображает текущие имена и значения переменных Readline. См. Встроенные команды Bash.Значительное количество параметров поведения во время выполнения можно изменить с помощью следующих переменных.
active-region-start-color-
Переменная строкового типа, которая управляет цветом текста и фоном при отображении текста в активной области (см. описание
enable-active-regionниже). Эта строка не должна занимать никаких физических позиций на экране, поэтому она должна содержать только управляющие последовательности терминала. Она выводится в терминал перед отображением текста в активной области. Эта переменная сбрасывается до значения по умолчанию всякий раз, когда меняется тип терминала. Значение по умолчанию — строка, которая устанавливает режим выделения текста в терминале, полученная из описания терминала terminfo. Пример значения: ‘\e[01;33m’. active-region-end-color-
Строковая переменная, которая «отменяет» эффект
active-region-start-colorи восстанавливает «нормальный» вид отображения терминала после отображения текста в активной области. Эта строка не должна занимать никаких физических позиций на экране, поэтому она должна содержать только управляющие последовательности терминала. Она выводится в терминал после отображения текста в активной области. Эта переменная сбрасывается до значения по умолчанию всякий раз, когда меняется тип терминала. Значение по умолчанию — строка, которая восстанавливает терминал из выделенного режима, полученная из описания терминала terminfo. Пример значения: ‘\e[0m’. bell-style-
Управляет тем, что происходит, когда Readline хочет прозвонить колокольчик терминала. Если установлено ‘none’, Readline никогда не прозвонит колокольчик. Если установлено ‘visible’, Readline использует видимый колокольчик, если он доступен. Если установлено ‘audible’ (значение по умолчанию), Readline пытается прозвонить колокольчик терминала.
bind-tty-special-chars-
Если установлено ‘on’ (значение по умолчанию), Readline пытается связать управляющие символы, обрабатываемые драйвером терминала ядра, с их эквивалентами Readline.
blink-matching-paren-
Если установлено ‘on’, Readline пытается временно переместить курсор к открывающей скобке при вставке закрывающей скобки. Значение по умолчанию — ‘off’.
colored-completion-prefix-
Если установлено ‘on’, при отображении возможных дополнений Readline отображает общий префикс набора возможных дополнений с использованием другого цвета. Определения цветов берутся из значения переменной среды
LS_COLORS. Если вLS_COLORSесть определение цвета для пользовательского суффикса ‘readline-colored-completion-prefix’, Readline использует этот цвет для общего префикса вместо значения по умолчанию. Значение по умолчанию — ‘off’. colored-stats-
Если установлено ‘on’, Readline отображает возможные дополнения с использованием различных цветов для указания их типа файла. Определения цветов берутся из значения переменной среды
LS_COLORS. Значение по умолчанию — ‘off’. comment-begin-
Строка, которая вставляется в начало строки при выполнении команды
insert-comment. Значение по умолчанию —"#". completion-display-width-
Количество столбцов экрана, используемых для отображения возможных совпадений при выполнении дополнения. Значение игнорируется, если оно меньше 0 или больше ширины экрана терминала. Значение 0 приведет к отображению совпадений по одному на строке. Значение по умолчанию — -1.
completion-ignore-case-
Если установлено ‘on’, Readline выполняет сопоставление и дополнение имён файлов без учёта регистра. Значение по умолчанию — ‘off’.
completion-map-case-
Если установлено ‘on’, и completion-ignore-case включено, Readline обрабатывает тире (‘-’) и нижние подчёркивания (‘_’) как эквивалентные при выполнении сопоставления и дополнения имён файлов без учёта регистра. Значение по умолчанию — ‘off’.
completion-prefix-display-length-
Длина в символах общего префикса списка возможных дополнений, который отображается без изменений. Если установлено значение больше нуля, общие префиксы, длина которых превышает это значение, заменяются многоточием при отображении возможных дополнений.
completion-query-items-
Количество возможных дополнений, которое определяет, когда пользователя спрашивают, нужно ли отобразить список возможностей. Если количество возможных дополнений больше или равно этому значению, Readline спросит, хочет ли пользователь их просмотреть; в противном случае они просто отображаются. Эта переменная должна быть установлена в целое число, большее или равное нулю. Значение нуль означает, что Readline никогда не спросит; отрицательные значения обрабатываются как нуль. Значение по умолчанию —
100. convert-meta-
Если установлено ‘on’, Readline преобразует символы с установленным восьмым битом в последовательность ASCII ключей, удаляя восьмой бит и добавляя префикс символом
ESC, преобразуя их в последовательность ключей с префиксом meta. Значение по умолчанию — ‘on’, но будет установлено в ‘off’ если локаль содержит символы с восьмым битом. Эта переменная зависит от категории локалиLC_CTYPE, и может измениться при изменении локали. disable-completion-
Если установлено ‘On’, Readline запрещает дополнение слов. Символы дополнения будут вставлены в строку, как если бы они были сопоставлены с
self-insert. Значение по умолчанию — ‘off’. echo-control-characters-
Если установлено ‘on’, в операционных системах, которые указывают, что поддерживают эту функцию, Readline эхом отражает символ, соответствующий сигналу, сгенерированному с клавиатуры. Значение по умолчанию — ‘on’.
editing-mode-
Переменная
editing-modeуправляет тем, какой набор наборов клавиш по умолчанию используется. По умолчанию Readline запускается в режиме редактирования Emacs, где нажатия клавиш наиболее похожи на Emacs. Эта переменная может быть установлена либо в ‘emacs’, либо в ‘vi’. emacs-mode-string-
Если переменная show-mode-in-prompt включена, эта строка отображается непосредственно перед последней строкой основного приглашения, когда активен режим редактирования Emacs. Значение расширяется как привязка клавиши, поэтому доступен стандартный набор мета- и управляющих префиксов и экранированных последовательностей обратной косой черты. Используйте экранирования ‘\1’ и ‘\2’ для начала и конца последовательностей непечатаемых символов, которые могут быть использованы для встраивания управляющей последовательности терминала в строку режима. Значение по умолчанию — ‘@’.
enable-active-region-
Точка — текущая позиция курсора, а метка относится к сохранённой позиции курсора (см. Команды перемещения). Текст между точкой и меткой называется областью. Когда эта переменная установлена в ‘On’, Readline позволяет некоторым командам обозначить область как активную. Когда область активна, Readline выделяет текст в области, используя значение
active-region-start-color, которое по умолчанию является строкой, которая включает режим выделения терминала. Активная область отображает текст, вставленный с помощью бракетированного вставки, и любой совпадающий текст, найденный с помощью инкрементных и неинкрементных поисков в истории. Значение по умолчанию — ‘On’. enable-bracketed-paste-
При установке в ‘On’, Readline настраивает терминал для вставки каждой вставки в буфер редактирования как одной строки символов вместо обработки каждого символа так, как будто он был прочитан с клавиатуры. Это называется переходом терминала в режим вставки в квадратных скобках; это предотвращает Readline от выполнения каких-либо команд редактирования, связанных с последовательностями клавиш, появляющимися в вставляемом тексте. Значение по умолчанию — ‘On’.
enable-keypad-
При установке в ‘on’, Readline попытается включить прикладную клавиатуру при вызове. Некоторые системы нуждаются в этом для активации стрелочных клавиш. Значение по умолчанию — ‘off’.
enable-meta-key-
При установке в ‘on’, Readline попытается включить любую мета-модификаторную клавишу, которую терминал заявляет о поддержке при вызове. На многих терминалах мета-клавиша используется для отправки восьмибитных символов. Значение по умолчанию — ‘on’.
expand-tilde-
Если установлено ‘on’, расширение тильды выполняется, когда Readline пытается выполнить дополнение слова. Значение по умолчанию — ‘off’.
history-preserve-point-
Если установлено ‘on’, код истории пытается установить точку (текущую позицию курсора) в той же позиции на каждой строке истории, полученной с помощью
previous-historyилиnext-history. Значение по умолчанию — ‘off’. history-size-
Установите максимальное количество записей истории, сохранённых в списке истории. Если установлено в ноль, все существующие записи истории удаляются, и новые записи не сохраняются. Если установлено в значение меньше нуля, количество записей истории не ограничено. По умолчанию количество записей истории не ограничено. Если попытка установить history-size в нечисловое значение, максимальное количество записей истории будет установлено в 500.
horizontal-scroll-mode-
Эта переменная может быть установлена либо в ‘on’, либо в ‘off’. Установка её в ‘on’ означает, что текст редактируемых строк будет прокручиваться по горизонтали в одной строке экрана, когда они длиннее ширины экрана, вместо того чтобы переходить на новую строку экрана. Эта переменная автоматически устанавливается в ‘on’ для терминалов высотой 1. По умолчанию эта переменная установлена в ‘off’.
input-meta-
Если установлено ‘on’, Readline включит восьмибитный ввод (не будет очищать восьмой бит в считываемых символах), независимо от того, что терминал заявляет о своей поддержке. Значение по умолчанию — ‘off’, но Readline установит его в ‘on’, если локаль содержит восьмибитные символы. Имя
meta-flagявляется синонимом для этой переменной. Эта переменная зависит от категории локалиLC_CTYPE, и может измениться при изменении локали.
isearch-terminators-
Строка символов, которая должна завершить инкрементный поиск, не выполняя затем символ как команду (см. Поиск команд в истории). Если этой переменной не задано значение, символы
ESCи C-J завершат инкрементный поиск. keymap-
Устанавливает представление Readline текущей раскладки клавиатуры для команд связывания клавиш. Встроенные имена
keymap— этоemacs,emacs-standard,emacs-meta,emacs-ctlx,vi,vi-move,vi-command, иvi-insert.viэквивалентноvi-command(vi-moveтакже является синонимом);emacsэквивалентноemacs-standard. Приложения могут добавлять дополнительные имена. Значение по умолчанию —emacs. Значение переменнойediting-modeтакже влияет на значении по умолчанию раскладки клавиатуры. keyseq-timeout-
Указывает время, в течение которого Readline будет ожидать символ при чтении неоднозначной последовательности клавиш (такой, которая может образовать полную последовательность клавиш, используя прочитанный до сих пор ввод, или может потребовать дополнительный ввод для завершения более длинной последовательности клавиш). Если в течение таймаута не будет получен ввод, Readline будет использовать более короткую, но полную последовательность клавиш. Readline использует это значение, чтобы определить, доступен ли ввод на текущем источнике ввода (
rl_instreamпо умолчанию). Значение указывается в миллисекундах, поэтому значение 1000 означает, что Readline будет ожидать одну секунду дополнительного ввода. Если эта переменная установлена в значение меньше или равно нулю, или в нечисловое значение, Readline будет ожидать нажатия другой клавиши, чтобы определить, какую последовательность клавиш завершить. Значение по умолчанию —500. mark-directories-
Если установлено в ‘on’, завершённые имена каталогов дополняются косой чертой. Значение по умолчанию — ‘on’.
mark-modified-lines-
Эта переменная, при установке в ‘on’, заставляет Readline отображать звездочку (‘*’) в начале строк истории, которые были изменены. По умолчанию эта переменная имеет значение ‘off’.
mark-symlinked-directories-
Если установлено в ‘on’, завершенные имена, которые являются символическими ссылками на каталоги, дополняются косой чертой (в зависимости от значения
mark-directories). Значение по умолчанию — ‘off’. -
Когда эта переменная установлена в ‘on’, Readline сопоставляет файлы, имена которых начинаются с ‘.’ (скрытые файлы), при выполнении завершения имени файла. Если установлено в ‘off’, ведущая ‘.’ должна быть указана пользователем в имени файла, который должен быть завершен. Значение по умолчанию — ‘on’.
-
Если установлено в ‘on’, завершение меню отображает общий префикс списка возможных завершений (который может быть пустым) перед переходом к списку. Значение по умолчанию — ‘off’.
output-meta-
Если установлено в ‘on’, Readline отобразит символы с установленным восьмым битом непосредственно, а не как мета-префиксную последовательность экранирования. Значение по умолчанию — ‘off’, но Readline установит его в ‘on’, если локаль содержит символы с восьмым битом. Эта переменная зависит от категории локали
LC_CTYPE, и может измениться при изменении локали. page-completions-
Если установлено в ‘on’, Readline использует внутренний просмотрщик (
more-подобный) для отображения страницы возможных завершений за раз. По умолчанию эта переменная имеет значение ‘on’. print-completions-horizontally-
Если установлено в ‘on’, Readline будет отображать завершения с совпадениями, отсортированными горизонтально в алфавитном порядке, а не вниз по экрану. Значение по умолчанию — ‘off’.
revert-all-at-newline-
Если установлено в ‘on’, Readline отменит все изменения в строках истории перед возвратом, когда выполняется
accept-line. По умолчанию строки истории могут быть изменены и сохранять отдельные списки отмены через вызовы кreadline(). Значение по умолчанию — ‘off’. show-all-if-ambiguous-
Это изменяет поведение функций завершения по умолчанию. Если установлено в ‘on’, слова, имеющие более одного возможного завершения, вызывают немедленное перечисление совпадений вместо звукового сигнала. Значение по умолчанию — ‘off’.
show-all-if-unmodified-
Это изменяет поведение функций завершения по умолчанию аналогично show-all-if-ambiguous. Если установлено в ‘on’, слова, имеющие более одного возможного завершения без каких-либо возможных частичных завершений (возможные завершения не имеют общего префикса), вызывают немедленное перечисление совпадений вместо звукового сигнала. Значение по умолчанию — ‘off’.
show-mode-in-prompt-
Если установлено в ‘on’, добавляет строку в начало приглашения, указывающую режим редактирования: emacs, команда vi или вставка vi. Строки режима могут быть настроены пользователем (например, emacs-mode-string). Значение по умолчанию — ‘off’.
skip-completed-text-
Если установлено в ‘on’, это изменяет поведение завершения по умолчанию при вставке одного совпадения в строку. Активно только при выполнении завершения посреди слова. При включении Readline не вставляет символы из завершения, которые совпадают с символами после точки в завершаемом слове, поэтому части слова после курсора не дублируются. Например, если это включено, попытка завершения, когда курсор находится после ‘e’ в ‘Makefile’, приведет к ‘Makefile’, а не к ‘Makefilefile’, если существует только одно возможное завершение. Значение по умолчанию — ‘off’.
vi-cmd-mode-string-
Если переменная show-mode-in-prompt включена, эта строка отображается непосредственно перед последней строкой основного приглашения, когда активен режим редактирования vi и режим команд. Значение расширяется как связка клавиш, поэтому доступен стандартный набор мета- и управляющих префиксов и обратных слэшей. Используйте escapes ‘\1’ и ‘\2’, чтобы начать и закончить последовательности непечатаемых символов, которые могут быть использованы для встраивания терминальной управляющей последовательности в строку режима. Значение по умолчанию — ‘(cmd)’.
vi-ins-mode-string-
Если переменная show-mode-in-prompt включена, эта строка отображается непосредственно перед последней строкой основного приглашения, когда активен режим редактирования vi и режим вставки. Значение расширяется как связка клавиш, поэтому доступен стандартный набор мета- и управляющих префиксов и обратных слэшей. Используйте escapes ‘\1’ и ‘\2’, чтобы начать и закончить последовательности непечатаемых символов, которые могут быть использованы для встраивания терминальной управляющей последовательности в строку режима. Значение по умолчанию — ‘(ins)’.
visible-stats-
Если установлено в ‘on’, символ, обозначающий тип файла, добавляется к имени файла при отображении возможных завершений. Значение по умолчанию — ‘off’.
- Настройки клавиш
-
Синтаксис управления привязкой клавиш в файле инициализации прост. Сначала необходимо найти имя команды, которую вы хотите изменить. В следующих разделах содержатся таблицы имени команды, её стандартной привязки клавиш, если таковая имеется, и краткого описания выполняемого командой действия.
После того, как вы узнали имя команды, просто поместите в строку файла инициализации имя клавиши, к которой вы хотите привязать команду, двоеточие и затем имя команды. Пробелов между именем клавиши и двоеточием быть не должно — это будет интерпретировано как часть имени клавиши. Имя клавиши может быть выражено различными способами, в зависимости от того, что вам удобнее.
Помимо имён команд, Readline позволяет привязывать клавиши к строке, которая вставляется при нажатии клавиши (макрос).
Команда
bind -pотображает имена функций Readline и их привязки в формате, который можно напрямую вставить в файл инициализации. См. Команды оболочки Bash.- имя_клавиши: имя_функции или макрос
-
имя_клавиши — это имя клавиши, написанное по-английски. Например:
Control-u: universal-argument Meta-Rubout: backward-kill-word Control-o: "> output"
В приведённом примере C-u привязана к функции
universal-argument, M-DEL привязана к функцииbackward-kill-word, а C-o привязана к выполнению макроса, выраженного справа (то есть к вставке текста ‘> вывод’ в строку).При обработке этого синтаксиса привязки клавиш распознаётся ряд символьных имён клавиш: DEL, ESC, ESCAPE, LFD, NEWLINE, RET, RETURN, RUBOUT, SPACE, SPC и TAB.
- "последовательность_клавиш": имя_функции или макрос
-
последовательность_клавиш отличается от имя_клавиши выше тем, что можно указать строки, обозначающие всю последовательность клавиш, поместив последовательность клавиш в двойные кавычки. Некоторые сокращения стиля GNU Emacs могут быть использованы, как в следующем примере, но специальные имена символов не распознаются.
"\C-u": universal-argument "\C-x\C-r": re-read-init-file "\e[11~": "Function Key 1"
В приведённом примере C-u снова привязана к функции
universal-argument(как и в первом примере), ‘C-x C-r’ привязана к функцииre-read-init-file, а ‘ESC [ 1 1 ~’ вставляет текст ‘Функциональная клавиша 1’.
Следующие сокращения стиля GNU Emacs доступны при указании последовательностей клавиш:
\C-префикс управления
\M-мета-префикс
\eсимвол escape
\\обратная косая черта
\"двойная кавычка
\'одинарная кавычка
Помимо сокращений стиля GNU Emacs, доступен второй набор сокращений с обратной косой чертой:
\aсигнал тревоги (звонок)
\bbackspace
\dудаление
\fформат подачи
\nновая строка
\rвозврат каретки
\tгоризонтальная табуляция
\vвертикальная табуляция
\nnnвосьмибитный символ, значение которого равно восьмеричному значению nnn (от одного до трёх цифр)
\xHHвосьмибитный символ, значение которого равно шестнадцатеричному значению HH (одна или две шестнадцатеричные цифры)
При вводе текста макроса для указания определения макроса необходимо использовать одинарные или двойные кавычки. Текст без кавычек предполагается именем функции. В теле макроса расшифровываются описанные выше сокращения с обратной косой чертой. Обратная косая черта будет цитировать любой другой символ в тексте макроса, включая ‘"’ и ‘'’. Например, следующая привязка сделает ‘C-x \’ вставкой в строку одной ‘\’:
"\C-x\\": "\\"
Copyright © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
Licensed under the GNU Free Documentation License.
https://www.gnu.org/software/bash/manual/html_node/Readline-Init-File-Syntax.html