Есть ли способ сохранить макрос клавиатуры в bash?

2448
mgalgs

Я хотел бы навсегда сохранить макрос клавиатуры, который я записал, используя C-x (и C-x ). Есть ли простой способ «увидеть источник» моего недавно записанного макроса, чтобы я мог связать его с сочетанием клавиш в ~ / .inputrc?

Я думал, dump-macrosчто сделает это, но это не похоже ...

11
Ну, я буду проклят. Я не знал об этой функции. Charlie Martin 12 лет назад 0
Я использую gnome-терминал и gconf-редактор для настройки сочетаний клавиш. saeedgnu 12 лет назад 0

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

2
mgalgs

Оказывается, это действительно невозможно, то есть, до сегодняшнего вечера это было невозможно!

Так как мне было любопытно покопаться в исходном коде bash, я пошел дальше и добавил эту функцию :). Посмотрим, применил ли мой патч мой сопровождающий .

1
Dobes Vandermeer

Лучшее, что я мог придумать, это попробовать:

echo >>.inputrc '<ctrl-x e>' 

Или, если макрос содержит несколько строк, попробуйте:

echo >>.inputrc <<EOF <ctrl-x e> EOF 

Если вы использовали управляющие символы, вы можете добавить туда sed, чтобы заменить их правильными управляющими кодами для inputrc.

Затем войдите и отредактируйте последнюю строку, чтобы иметь правильный префикс и суффикс для того, чего вы пытаетесь достичь ...

сохраните шаг, отредактируйте .inputrc, поместите туда, где вы хотите макрос, и Cx e «напечатайте его». Но да, я бы сказал, что это лучший способ, конечно, вы можете поместить его куда угодно, это просто набор нажатий клавиш. Если вы не в «правильном режиме / месте / программе», вы, скорее всего, получите неправильно понятые данные. Но можно было бы ожидать, что если вы не используете макрос в нужном месте, верно? lornix 12 лет назад 0
0
Dennis Hodapp

Похоже, что .inputrc позволяет вам просто редактировать ваши команды. Я пытался использовать dump-macrosтакже, но не смог заставить его работать, и нет много документации об этом. Возможно, это не работает или устарело.

Если бы была такая команда, как xevдля привязок emacs, это было бы полезно. В любом случае, я думаю, что вам лучше всего отредактировать inputrc, руководствуясь указаниями, приведенными в первой ссылке внизу страницы. Это довольно легко сделать.

Вторая ссылка - это пример файла inputrc, помогающий понять, как настроить макросы.

Кроме того, есть также классная команда, bind -Pкоторая выдает список всех ваших макросов.

http://www.gnu.org/software/bash/manual/html_node/Miscellaneous-Commands.html#Miscellaneous-Commands

Вот пример файла inputrc:

http://www.gnu.org/software/bash/manual/html_node/Sample-Init-File.html#Sample-Init-File

Да, весь смысл в том, что ** не ** нужно писать макрос вручную, а вместо этого распечатать тот, который я только что записал ... mgalgs 12 лет назад 0
Оказывается, `dump-macros` просто выводит то, что будут выводить ваши текущие определенные макросы. mgalgs 12 лет назад 0
0
FALL3N

Добавьте эту строку к .inputrc:

alias macro 
о, спасибо за исправление, мой плохой: / FALL3N 12 лет назад 0