Как сопоставить функциональные клавиши меньше?

282
Cyker

Можно ли сопоставить функциональные клавиши (F1-F12) lessс lesskey?

Это не похоже на работу:

#command F1 forw-line 
2

1 ответ на вопрос

2
mr.spuratic

Исторически, терминалы используют экранированные последовательности для функциональных клавиш, клавиш курсора и многого другого. Средства termcap и terminfo помогают справляться с изменениями между терминалами.

Сначала вы должны определить, что ваш терминал отправляет, когда вы нажимаете F1, bashвы можете сделать:

printf "%q\n" "CtrlV F1"

Во второй паре кавычек вы набираете Ctrl+, Vчтобы следующий текст был обработан буквально ( дословно ), а затем F1. На моем терминале (rxvt) я вижу

$'\E[11~' 

так что моя последовательность F1 escape [ 11 ~, так что в .lesskeyдолжны идти

#command \e[11~ forw-line 

запустить lesskeyдля обновления, и теперь F1вызовет эту команду.

infocmp это еще один способ увидеть, как настроен ваш терминал, например

infocmp -L1 rxvt | grep key_f1= 

См. Ответ Стефана Шазеля здесь, чтобы узнать больше о том, что, хотя lessи не используется readline, настройка readline требует аналогичного понимания.