Как связать ключ, чтобы убить repl и yank в буфере на emacs - PullRequest
2 голосов
/ 23 ноября 2011

Вы можете предположить, что я нахожусь в repl, используя режим слизи.

Как мне сделать функциональную клавишу (например, f4), чтобы сделать это:

  1. убить последний элемент истории (те, которые вы получаете с помощью C-up или C-down);
  2. переместить в верхний буфер;
  3. yank, сохранить буфер в файл;
  4. вернитесь к ответу.

Пожалуйста, сделайте пошаговое руководство, потому что я полный новичок в Emacs и Lisp.

1 Ответ

9 голосов
/ 23 ноября 2011

Самый простой способ сделать то, что вы просите, - это использовать макросы emacs .

Почему?Потому что вы только что сказали, что именно вы хотите сделать.И макросы сохраняют последовательность клавиш, которые вы ввели.Вы можете сделать это в emacs за один раз и сохранить последовательность нажатых клавиш.

Итак, начните запись макроса (когда вы находитесь в буфере repl), используя F3 или C-x (, затем выполнитечто-то вроде M-p C-a C-k C-u - C-x o C-y C-x o (я только что перевел ваш запрос на последовательность клавиш), затем введите F4 или C-x ).Чтобы выполнить макрос, нажмите F4 еще раз или C-x e.

Вы можете прервать запись макроса, если вы запутались с C-g.Обратное применяется, если вы сделали беспорядок и сообщение об ошибке отправлено, ваша запись макроса (иногда расстраивающая) или оценка (и это особенность, так как вы можете сделать макрос, который будет работать хорошо, просто удерживая F4), будет прерван.

Если вы хотите использовать этот макрос позже, вы можете назвать его с помощью M-x name-last-kbd-macro.Это позволит вам использовать в качестве команды, набрав M-x <your macro name> (<your macro name> - имя вашего макроса).Это не сохранит его для будущих сессий, просто назовите его.

Чтобы сохранить названный макрос, используйте M-x insert-kbd-macro, когда вы находитесь в файле .emacs.Это вставит код elisp в текущую точку, выполнив которую вы получите привязанный макрос к имени вашей команды (и он будет выполняться каждый раз, когда вы запускаете emacs).

Чтобы привязать его к некоторой клавише, лучше запускать его каждый раз с M-x, вставьте его в файл .emacs: (global-set-key [f12] '<your-macro-name>).Вы можете прочитать больше о настройке команд для ключей там и там .

Недостаток макроса в том, что вы отменяете каждый шаг, а не весь макрос в одномвремя (но кто-то может принести решение здесь, если он есть).Если вы хотите сделать что-то более серьезное, используя условия или итерации, вы должны перенаправить свой путь к elisp.Просто C-h k все вокруг.Также будут использоваться клавиши помощи, такие как C-h f, C-h a, C-h b.

...