Với một tên lệnh emacs, bạn sẽ tìm thấy các liên kết khóa như thế nào? (và ngược lại)


107

Nếu tôi biết tên lệnh emacs, hãy nói, "goto-line"; Điều gì sẽ xảy ra nếu tôi muốn truy vấn xem liệu có bất kỳ chuỗi khóa nào liên kết với lệnh này không?

Và ngược lại, đã cho một dãy phím, làm thế nào tôi có thể tìm thấy tên lệnh của nó?

Câu trả lời:


159

Để chỉ tìm các ràng buộc chính cho một lệnh, bạn có thể sử dụng tính năng "ở đâu" của trợ giúp emacs

C-h w command-name

Nếu nhiều ràng buộc được đặt cho lệnh thì tất cả chúng sẽ được liệt kê.

Đối với nghịch đảo, đã cho một chuỗi khóa, bạn có thể nhập

C-h k key-sequence

Để nhận lệnh sẽ chạy.

Bạn có thể nhận được thông tin chi tiết về một lệnh, cũng như bất kỳ chức năng không tương tác nào được xác định, bằng cách nhập

C-h f function-name

Điều này sẽ cung cấp cho bạn thông tin chi tiết về một chức năng, bao gồm mọi ràng buộc chính cho chức năng đó và

C-h v variable-name

sẽ cung cấp cho bạn thông tin về bất kỳ biến (bị ràng buộc) nào. Bản đồ khóa được giữ trong các biến, tuy nhiên các mã khóa được lưu trữ ở định dạng thô. Hãy thử C-h v isearch-mode-mapcho một ví dụ.

Để được trợ giúp thêm về cách nhận trợ giúp, bạn có thể nhập

C-h ?


51
Bạn cũng có thể làm C-h w <function name>để biết chìa khóa ở đâu chứ không phải tài liệu đầy đủ. Ngược lại, bạn cũng có thể làm C-h c <key sequence>để biết hàm nào được liên kết với một chuỗi khóa.
ShreevatsaR

7
also: Ch w thường được liên kết với where-is.
Cheeso

2
Vì vậy, tôi có thể ở đâu-ở-đâu-ở-đâu khi tôi quên Ch w. Thật tuyệt ! ;)
Sake

1
Đối với những người đã liên kết C-hvới một cái gì đó khác trong trình quản lý cửa sổ của họ: C-h wtương đương với M-x where-is. C-h ktương đương với M-x describe-key. C-h ftương đương với M-x describe-function. C-h vtương đương với M-x describe-variable. C-h ?tương đương với M-x help-for-help. Cũng lưu ý rằng f1có thể được sử dụng thay thế C-h.
Ricardo

13

C-h w(hoặc F1-w): where-isRET tên lệnh nào đó RET

Đúng như những gì bạn đang yêu cầu - liệt kê các khóa bị ràng buộc mà không có thông tin bổ sung. :)


13

Để tương tác nhận lệnh liên kết với phím tắt (hoặc chuỗi phím trong thuật ngữ Emacs), hãy xem câu trả lời đã chọn.

Để nhận lệnh liên kết với một chuỗi khóa nhất định theo chương trình, hãy sử dụng hàm key-bindinghoặc hàm lookup-keynhận một chuỗi khóa và trả về lệnh liên kết của nó. Chức năng key-bindinglà những gì C-h ksử dụng.

(key-binding (kbd "C-h m"))

trả về lệnh bị ràng buộc C-h mbằng cách tìm kiếm trong tất cả các sơ đồ bàn phím hiện tại. Hàm lookup-keytìm kiếm trong một sơ đồ bàn phím:

(lookup-key (current-global-map) (kbd "TAB")) ; => indent-for-tab-command
(lookup-key org-mode-map (kbd "TAB")) ; => org-cycle
(lookup-key text-mode-map (kbd "TAB")) ; => nil
(lookup-key isearch-mode-map (kbd "TAB")) ; => isearch-printing-char

Đối với lập trình nhận tất cả các chuỗi khóa liên kết với một lệnh nhất định, where-is-internalcó lẽ là hàm để sử dụng. Tên của hàm kết thúc bằng internaldường như gợi ý rằng nó không dành cho người dùng Emacs để sử dụng trong các tệp init của họ nhưng hàm này có chuỗi doc dường như gợi ý khác. Bất kỳ ai đang cân nhắc sử dụng where-is-internaltrước tiên nên kiểm tra xem các khóa ánh xạ lại có thể đạt được mục tiêu của họ hay không.

Một giải pháp thay thế để tìm các khóa được liên kết với một lệnh cụ thể (ví dụ forward-char:) là substitute-command-keys(ví dụ (substitute-command-keys "\\[forward-char]"):). Điều đó đặc biệt hữu ích trong các văn bản lớn hơn.


Nhìn vào tài liệu where-is-internalcho thấy bạn có thể sử dụng nó. Ngoài ra, thông thường chúng tôi sử dụng một định dạng như where-is--internal(lưu ý dấu gạch ngang kép) cho các chức năng "riêng tư".
GergelyPolonkai

2
Cách sử dụng hậu tố -internalđược mô tả ở đó: gnu.org/software/emacs/manual/html_node/elisp/… . Nó nên được sử dụng cho các hàm C nội bộ.
Tobias

4

Một câu hỏi cũ, nhưng vì lợi ích của người đọc mới, có một số cách hay ho khác để xem các ràng buộc chính

M-x describe-bindings

Liệt kê tất cả các ràng buộc hiện có, sử dụng isearch, doing, v.v. để tận dụng tốt danh sách này.

M-x describe-prefix-map

Điều này hiển thị tất cả các ràng buộc có sẵn từ chế độ hiện tại, bạn có thể sử dụng bộ đệm hiển thị như bạn làm với bất kỳ bộ đệm Emacs chỉ đọc nào khác, chẳng hạn như bạn có thể tự do tìm kiếm các chuỗi, v.v.

M-x describe-mode

Ngoài việc cung cấp cho bạn thông tin chung về chế độ hiện tại, nó cũng sẽ liệt kê tất cả các ràng buộc chính có sẵn.

M-x describe-minor-mode

Bạn sẽ được nhắc nhập tên của chế độ phụ, sau đó được hiển thị thông tin và các ràng buộc chính cho chế độ phụ đó.

LƯU Ý : Các ví dụ bên dưới sử dụng các gói bổ sung (có sẵn từ MELPA )

Phím nào

Điều này cho bạn thấy các ràng buộc ngay trước khi bạn cần chúng. Nhập một tiền tố, chẳng hạn C-xhoặc C-cvà danh sách các ràng buộc có sẵn trong tiền tố đó sẽ được hiển thị.

Bạn cũng có thể xem danh sách các ràng buộc chính có sẵn từ chế độ hiện tại bằng cách sử dụng:

M-x which-key-show-top-level

Sẽ rất hữu ích khi liên kết which-key-show-top-levelvới một hợp âm chính mà bạn chọn, vì vậy bạn có thể xem các phím có sẵn từ bất kỳ đâu.

Ví dụ, C-s( isearch-forward) có một bản đồ khóa mở rộng thường không được biết đến. Ví dụ: M-s obắt đầu occursử dụng chuỗi tìm kiếm hiện tại, tôi đã không biết về điều này trong nhiều năm sử dụng Emacs. Có mặt which-keyxung quanh đã giúp tôi khám phá nhiều đá quý hiếm ở Emacs.

https://github.com/justbur/emacs-which-key

Phím hướng dẫn

Phím hướng dẫn hoạt động theo cách giống như which-keytôi khuyên bạn nên xem qua để so sánh các tính năng.

https://github.com/kai2nenobu/guide-key

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.