Условные конструкции инициализации
Readline реализует механизм, похожий по своей сути на средства условной компиляции препроцессора C, который позволяет задавать привязки клавиш и значения переменных по результатам проверок. Доступны четыре директивы анализатора.
$if-
Конструкция
$ifпозволяет задавать привязки в зависимости от режима редактирования, используемого терминала или приложения, использующего Readline. Текст проверки после любого оператора сравнения продолжается до конца строки; если не указано иное, отделять его какими-либо символами не требуется.mode-
Форма
mode=директивы$ifиспользуется для проверки того, находится ли Readline в режимеemacsилиvi. Её можно использовать вместе с командой «set keymap», например, чтобы задавать привязки в раскладках клавишemacs-standardиemacs-ctlxтолько в том случае, если Readline запускается в режимеemacs. term-
Форму
term=можно использовать для включения привязок клавиш, специфичных для терминала, например, чтобы привязать последовательности клавиш, выдаваемые функциональными клавишами терминала. Слово справа от «=» проверяется на совпадение как с полным именем терминала, так и с частью его имени до первого символа «-». Благодаря этому, например,xtermсоответствует иxterm, иxterm-256color. 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 и их значений. Допустимые операторы сравнения: «=», «==» и «!=». Имя переменной должно отделяться от оператора сравнения пробелами; оператор может отделяться пробелами от значения справа. Можно проверять строковые и логические переменные. Логические переменные необходимо сравнивать со значениями on и off. Следующий пример эквивалентен проверке
mode=emacs, описанной выше:$if editing-mode == emacs set show-mode-in-prompt on $endif
$else-
Команды в этой ветви директивы
$ifвыполняются, если проверка не пройдена. $endif-
Эта команда, как видно из предыдущего примера, завершает команду
$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