Конструкции условной инициализации
Readline реализует механизм, аналогичный функциям условной компиляции в препроцессоре C, позволяющий выполнять привязку клавиш и настройки переменных в результате проверки условий. Используются четыре директивы парсера.
$if-
Конструкция
$ifпозволяет устанавливать привязки на основе режима редактирования, используемого терминала или приложения, использующего Readline. Текст проверки, после любого оператора сравнения, продолжается до конца строки; если не указано иное, для его изоляции не требуются никакие символы.mode-
Форма директивы
$ifmode=используется для проверки, находится ли Readline в режимеemacsилиvi. Это может использоваться совместно с командой «set keymap», например, для установки привязок только в картах клавишemacs-standardиemacs-ctlx, если Readline запускается в режимеemacs. term-
Форма
term=может использоваться для включения привязок клавиш, специфичных для терминала, возможно, для привязки последовательностей клавиш, создаваемых функциями клавиш терминала. Слово справа от «=» проверяется как против полного имени терминала, так и против части имени терминала до первой «-». Это позволяетsunсопоставляться как сsun, так и сsun-cmd, например. version-
Тест
versionможет использоваться для сравнения с конкретными версиями Readline.versionпредставляет текущую версию Readline. Набор операторов сравнения включает «=» (и «==»), «!=», «<=», «>=», «<» и «>». Номер версии, указанный справа от оператора, состоит из номера основной версии, необязательной десятичной точки и необязательного номера дополнительной версии (например, «7.1»). Если дополнительная версия опущена, предполагается, что она равна «0». Оператор может быть отделен от строкиversionи от аргумента номера версии пробелами. Следующий пример устанавливает переменную, если используемая версия Readline 7.0 или более поздняя:$if version >= 7.0 set show-mode-in-prompt on $endif
application-
Конструкция application используется для включения настроек, специфичных для приложения. Каждая программа, использующая библиотеку Readline, устанавливает имя приложения, и вы можете проверить значение на предмет соответствия. Это может использоваться для привязки последовательностей клавиш к функциям, полезным для конкретной программы. Например, следующая команда добавляет последовательность клавиш, которая заключает в кавычки текущее или предыдущее слово в Bash:
$if Bash # Quote the current or previous word "\C-xq": "\eb\"\ef\"" $endif
variable-
Конструкция variable предоставляет простые тесты равенства для переменных и значений Readline. Разрешенные операторы сравнения — «=», «==» и «!=». Имя переменной должно быть отделено от оператора сравнения пробелом; оператор может быть отделен от значения справа пробелом. Проверяются как строковые, так и логические переменные. Логические переменные должны проверяться на соответствие значениям включено и выключено. Следующий пример эквивалентен тесту
mode=emacsописанному выше:$if editing-mode == emacs set show-mode-in-prompt on $endif
$endif-
Эта команда, как видно в предыдущем примере, завершает команду
$if. $else-
Команды в этом ветвлении директивы
$ifвыполняются, если проверка завершается неудачно. $include-
Эта директива принимает в качестве аргумента имя файла и считывает команды и привязки из этого файла. Например, следующая директива считывает из /etc/inputrc:
$include /etc/inputrc
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/Conditional-Init-Constructs.html