- M-x được ràng buộc với lệnh
execute-extended-command
, cho phép bạn gõ tên của một lệnh và chạy nó.
- M-: được liên kết với lệnh
eval-expression
, cho phép bạn nhập biểu thức S tùy ý có chứa chức năng cuộc gọi và đánh giá nó.
Chức năng, mà bạn có thể gọi với M:, được sử dụng để thực hiện tính năng Emacs, tùy chỉnh (chẳng hạn như trong .emacs
của bạn), và plug-in. Các đối số hàm thường được truyền bằng cách gọi hàm trong biểu thức S.
Mọi chức năng có thể cũng là lệnh nếu nó có dạng interactive
trong định nghĩa của nó. Biểu mẫu interactive
mô tả cách hàm sẽ nhận các đối số của nó khi được gọi là lệnh. Ví dụ: nếu hàm có (interactive "bGive me a buffer: ")
trong định nghĩa của nó, thì hàm sẽ được gọi với M-x. Khi người dùng gọi hàm với M-x, Emacs sẽ nhắc người dùng cho tên đệm (vì b
) và tên họ nhập sẽ được chuyển làm đối số cho hàm.
Điểm tạo ra một chức năng là một lệnh để làm cho việc gọi nó dễ dàng cho người dùng cuối, không chỉ cho các lập trình viên Emacs Lisp. Lệnh (chạy với M-x) được dễ dàng hơn để chạy một cách tương tác trong các cách sau:
- Bạn không cần phải bao quanh tên lệnh với
()
để làm cho nó một S-biểu thức hợp lệ.
- Đối số có thể được chuyển tự động (chẳng hạn như vị trí con trỏ) hoặc bạn có thể được nhắc cho chúng để bạn không phải nhớ đối số nào là cần thiết.
- Khi được nhắc cho một đối số, bạn có thể tự động hoàn thành, bởi vì hình thức code characters của
interactive
(như b
) chỉ định kiểu đầu vào mong đợi.
Lý do bạn không thể gọi hàm set-face-attribute
với M-x là định nghĩa của nó không chứa một hình thức interactive
, vv set-face-attribute
không phải là một lệnh. Bạn phải gọi nó là một hàm đơn giản, trong biểu thức S. Bạn có thể làm điều đó từ minibuffer với M-: hoặc từ những nơi khác với bất kỳ số nào khác trong số ways of evaluating code.
Emacs Mini Manual → Concepts → Command có lời giải thích ngắn gọn, khác biệt giữa các chức năng và lệnh bình thường. Relationship between Emacs functions and commands giải thích một số chi tiết không có trong câu trả lời này.
Nguồn
2015-03-22 21:01:51
Câu hỏi này được mở rộng từ câu hỏi của [DavidS] (http://stackoverflow.com/users/201891/davids) trong [nhận xét này] (http://stackoverflow.com/questions/294664/how-to -set-the-font-size-in-emacs # comment46074287_296316). –