태그 보관물: elisp

elisp

키보드 매크로를 Lisp 기능으로 저장하는 방법은 무엇입니까? 이러한 단계는 키보드 매크로로 기록 될 수

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

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

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

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



답변

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

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

    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 세션에서 할 수 있습니다 .


답변

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))

답변

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


답변