키보드 매크로를 Lisp 기능으로 저장하는 방법은 무엇입니까?


41

매우 자주 여러 번의 키 입력이 필요한 일련의 단계를 수행해야합니다. 동일한 세션에서 이러한 단계는 키보드 매크로로 기록 될 수 있습니다.

예를 들어 자주 실행되는 검색 / 바꾸기 작업을 키보드 매크로로 저장하는 것이 있습니다. 그러나 emacs를 종료하면 해당 매크로가 손실됩니다.

자주 사용하는 키보드 매크로를 Lisp 기능으로 저장하려면 어떻게해야합니까?

간단하게하기 위해 emacs 세션에서 재사용 할 수 있도록 "abc"를 "def"로 바꾸는 동작을 함수로 저장하고 싶습니다.

답변:


48

수행 할 수있는 단계는 다음과 같습니다.

  • 검색을 수행 할 지역을 선택하십시오.
  • 매크로 기록을 시작하십시오.

    M-x start-kbd-macro

  • 필요한 작업을 수행하고 M-x query-replace-regexp( "abc"를 "def" !로 대체) 전체 지역에서 강제로 검색을 대체하는 데 사용하십시오.
  • 매크로 기록을 중지하십시오.

    M-x kmacro-end-or-call-macro.

  • 수행 M-x kmacro-name-last-macro및 매크로에게 같은 설명이 포함 된 이름을 제공 replace-abc-with-def. 그런 다음을 수행하여 해당 매크로를 다시 호출 할 수 있습니다 M-x replace-abc-with-def.
  • 이제이 매크로를 emacs 초기화 중에로드하는 파일에 함수로 저장하십시오. 예를 들면 다음과 같습니다 init.el.
    • M-x insert-kbd-macro
    • 삽입 할 명명 된 매크로를 선택하십시오.

자동 생성 된 replace-abc-with-def함수 정의는 다음과 같습니다.

(fset 'replace-abc-with-def
   (lambda (&optional arg) "Keyboard macro." (interactive "p") (kmacro-exec-ring-item (quote ([59 39 return 97 98 99 return 100 101 102 return 33] 0 "%d")) arg)))

이제 M-x replace-abc-with-def모든 emacs 세션에서 할 수 있습니다 .


1
일에 대한 insert-kbd-macro. 이것이 질문에 대한 답변입니다 (이 답변의 나머지 부분은 추가 도움을 제공합니다).
Drew

6
Emacs는 키보드 매크로에 대해 서로 다른 두 가지 형식을 생성 할 수 있습니다. (위의 답변에서와 같이) 또는를 insert-kbd-macro사용하여 이름을 지정했는지 여부에 따라 어느 것이 나타납니다 . kmacro-name-last-macroname-last-kbd-macro
phils

1
name-last-kbd-macro위의 @phils에서 언급 한 것처럼 형식 을 사용하면 함수가 아닌 문자열로 끝납니다. fset이 기호를 심볼로 지정하면 Mx를 사용하여 매크로를 실행할 수 있지만 lisp ( -> , -> ) 에서는 매크로를 호출 할 수 없습니다 . 이상하게도 전화를 걸어도 작동하지 않습니다 ( 실행하는 데 사용할 수는 있지만 ). commandptfunctionpnilcall-interactivelyexecute-kbd-macro
불꽃

24

elmacro 는 이미 @lunaryorn 에 의해 언급되었지만이 패키지의 저자로서 예제를 제공하는 것이 좋을 것이라고 생각했습니다.

다음과 같은 매크로를 기록하는 경우 :

F3 C-e M-b M-u C-a C-n F4

그런 다음 다음을 M-x elmacro-show-last-macro upcase-last-word사용하여 버퍼를 생성합니다.

(defun upcase-last-word ()
  "Change me!"
  (interactive)
  (move-end-of-line 1)
  (backward-word 1)
  (upcase-word 1)
  (move-beginning-of-line 1)
  (next-line 1 1))

17

elmacro 패키지는 당신이 적절한 이맥스 리스프으로 마지막으로 기록 된 매크로를 볼 수 있습니다 M-x elmacro-show-last-macro.


7
누군가가 추천 한 패키지 \ o /
Silex
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.