예, 모든 이맥스 명령은 기능이지만 모든 기능이 이맥스 명령이 아닙니다. 당신은 임의의 elisp 기능 (interactive)
를 사용 M-x
를 통해 액세스 할 수있는 명령 할 수있다 : 이제
(defun my-command()
"This is the docstring"
(interactive)
(do-foo)
(do-bar))
당신이 같은 대화 형 my-command
을 정의한 것으로, 즉시 M-x my-command
에 액세스 할 수 있습니다. Emacs는 자동으로 이름을 가진 부기를 자동으로 처리합니다.
이것은 입니다. 새 명령을 추가하려면해야합니다! 다음과 같이 키에 바인딩 할 수 있습니다.
(global-set-key (kbd "C-c f") 'my-command)
더욱이 모든 키 바인딩은 이와 같은 대화 형 함수와 관련되어 있습니다. C-h k
을 사용하여 어떤 기능이 어떤 키로 호출되는지를 발견하고 키 순서를 입력하십시오. 그러면 해당 키 시퀀스에서 호출 될 함수에 대한 문서가 제공됩니다. 그래서
C-c f runs the command my-command, which is an interactive Lisp
function.
It is bound to C-c f.
(my-command)
This is the docstring
: 코드를 실행 한 경우 내가 (다른 것들 사이) 당신이 포함 된 버퍼를 줄 것이다 C-h k C-c f
을하고, 당신의 문서 문자열을 준 모든 이맥스 명령 (interactive)
정의 단지 기능입니다. (사실, 이맥스의 C 코어의 원시 함수도 있지만, 그다지 중요하지는 않습니다.)
명령과 함수 사이의 간단하고 우아한 관계 - 어느 방향으로나 따라하기 쉽습니다 - 부분적입니다 Emacs를 쉽게 커스터마이징 할 수있게 해주는 이유 중 정상 동작이 호출 한 기능이 무엇인지 궁금해지면 쉽게 찾아 볼 수 있으며 더 많은 명령을 추가하려면 함수에 한 개의 추가 행이 있어야합니다.
M-x는 함수가 아니며 함수에 바인딩 된 키 시퀀스입니다. 이런 일이 발생하면 명령을 매개 변수로 사용하는 함수에 바인딩됩니다. 대화 형으로 호출 될 때, 그것의'interactive' 형식은 명령 이름을 요구하도록합니다. – tripleee