Есть ли способ сохранить макрос клавиатуры в bash?
Я хотел бы навсегда сохранить макрос клавиатуры, который я записал, используя Cx ( и Cx). Есть ли простой способ "увидеть источник" моего недавно записанного макроса, чтобы я мог связать его с сочетанием клавиш в ~/.inputrc?
я думал dump-macros
сделал бы это, но это не похоже...
5 ответов
Оказывается, это действительно невозможно, то есть до сегодняшнего вечера это было невозможно!
Так как мне было любопытно покопаться в исходном коде bash, я пошел дальше и добавил эту функцию:). Посмотрим, применил ли мой патч мой сопровождающий.
если это последний определенный макрос, это должно работать хорошо...
Справочник GNU Bash : распечатайте последний макрос клавиатуры, определенный в формате, подходящем для файла inputrc.
print-last-kbd-macro ()
Лучшее, что я мог придумать, это попробовать:
echo >>.inputrc '<ctrl-x e>'
Или, если макрос состоит из нескольких строк, попробуйте:
echo >>.inputrc <<EOF
<ctrl-x e>
EOF
Если вы использовали управляющие символы, вы можете добавить туда sed, чтобы заменить их правильными управляющими кодами для inputrc.
Затем перейдите и отредактируйте последнюю строку, чтобы иметь правильный префикс и суффикс для того, чего вы пытаетесь достичь...
Похоже, что .inputrc позволяет вам просто редактировать ваши команды. Я пытался использовать dump-macros
также, но не мог заставить это работать, и нет большого количества документации об этом. Возможно, это не работает или устарело.
Если бы была такая команда xev
для привязок Emacs, это было бы полезно. В любом случае, я думаю, что вам лучше всего отредактировать inputrc, руководствуясь указаниями, приведенными в первой ссылке внизу страницы. Это довольно легко сделать.
Вторая ссылка - это пример файла inputrc, помогающий понять, как настроить макросы.
Кроме того, есть также классная команда под названием bind -P
который перечислит все ваши макросы.
http://www.gnu.org/software/bash/manual/html_node/Miscellaneous-Commands.html
Вот пример файла inputrc:
http://www.gnu.org/software/bash/manual/html_node/Sample-Init-File.html