Jeder Befehl ist eine Funktion, aber nicht jede Funktion ist auch ein Befehl. 1
Ein Befehl beinhaltet einen Aufruf von interactive; Aus diesem Grund werden Befehle üblicherweise als "interaktive Funktionen" bezeichnet. Befehle können über aufgerufen M-x name-of-command RETund an eine Tastenfolge gebunden werden. Normale Funktionen enthalten keinen Aufruf von interactive, können nicht mit aufgerufen werden M-xund Sie können sie nicht an eine Tastenfolge binden. Um eine Funktion auszuführen, die nicht interaktiv ist, können Sie M-:( eval-expression) drücken , den Namen der Funktion gefolgt von Werten für Argumente in Klammern eingeben und Folgendes drücken RET:
M-: (name-of-function arg1 arg2 arg3) RET
Wenn die Funktion nicht mit dem aktuellen Puffer arbeiten soll, können Sie auch eingeben
(name-of-function arg1 arg2 arg3)
*scratch*Klicken Sie in den Puffer und drücken Sie C-x C-e( eval-last-sexp) mit dem Punkt nach der schließenden Klammer.
Um eine Funktion barals Befehl verfügbar zu machen , können Sie sie foowie folgt in eine benutzerdefinierte interaktive Funktion ( ) einbinden:
(defun foo ()
(interactive)
(bar))
Wenn Sie barein oder mehrere Argumente verwenden, müssen Sie diese natürlich angeben, damit foodie Funktion ordnungsgemäß ausgeführt wird.
Wenn Sie austauschbar Menschen mit Hilfe der Begriffe „Funktion“ und „Befehl“ zu sehen, dies könnte angeben (je nach Kontext) , dass sie nicht über die Unterschiede zwischen den zugrundeliegenden Konzepte sind.
1 Beachten Sie, dass ich hier über defuns spreche . Wie @Stefan in den Kommentaren ausführt, sind Tastaturmakros ein Sonderfall: Sie können als Befehle betrachtet werden , sind aber keine Funktionen.
C-h i, wählen Sie das Elisp-Handbuch ,i command- bringt Sie direkt in den KnotenWhat is a function?, was all dies kristallklar macht. Helfen Sie Benutzern, Emacs zu fragen. (Nur eine Meinung.)