ด้วยชื่อคำสั่ง emacs คุณจะค้นหาการผูกคีย์ได้อย่างไร (และในทางกลับกัน)


107

ถ้าฉันรู้ชื่อคำสั่ง emacs ให้พูดว่า "goto-line"; จะเกิดอะไรขึ้นถ้าฉันต้องการสอบถามว่ามีลำดับคีย์ใด ๆ ที่ผูกกับคำสั่งนี้หรือไม่

และในทางกลับกันเมื่อกำหนดลำดับคีย์ฉันจะค้นหาชื่อคำสั่งได้อย่างไร

คำตอบ:


159

ในการค้นหาการเชื่อมโยงคีย์สำหรับคำสั่งคุณสามารถใช้คุณลักษณะ "where-is" ของวิธีใช้ emacs

C-h w command-name

หากมีการตั้งค่าการเชื่อมโยงหลายรายการสำหรับคำสั่งทั้งหมดจะแสดงรายการ

สำหรับการผกผันตามลำดับคีย์คุณสามารถพิมพ์ได้

C-h k key-sequence

เพื่อรับคำสั่งที่จะทำงาน

คุณสามารถรับข้อมูลโดยละเอียดเกี่ยวกับคำสั่งรวมทั้งฟังก์ชันที่ไม่ใช่แบบโต้ตอบที่กำหนดได้โดยการพิมพ์

C-h f function-name

ซึ่งจะให้ข้อมูลโดยละเอียดเกี่ยวกับฟังก์ชันรวมถึงการผูกคีย์ใด ๆ สำหรับฟังก์ชันนี้และ

C-h v variable-name

จะให้ข้อมูลเกี่ยวกับตัวแปร (ผูกพัน) ใด ๆ คีย์แมปจะถูกเก็บไว้ในตัวแปรอย่างไรก็ตามรหัสคีย์จะถูกเก็บไว้ในรูปแบบดิบ ลองดูC-h v isearch-mode-mapตัวอย่าง

หากต้องการความช่วยเหลือเพิ่มเติมในการขอความช่วยเหลือคุณสามารถพิมพ์

C-h ?

เอาชนะหมัด โอ้
dmckee --- อดีตผู้ดูแลลูกแมว

51
นอกจากนี้คุณยังสามารถทำC-h w <function name>เพื่อทราบเพียงที่สำคัญคือไม่ได้เอกสารฉบับเต็ม ในทางกลับกันคุณสามารถทำได้C-h c <key sequence>เพื่อเพียงแค่รู้ว่าฟังก์ชันใดที่เชื่อมโยงกับลำดับคีย์
ShreevatsaR

7
ด้วย: โดยทั่วไปแล้ว Ch w จะถูกผูกไว้กับ where-is
Cheeso

2
ดังนั้นฉันสามารถอยู่ที่ไหน - อยู่ที่ไหนเมื่อฉันลืม Ch w. เยี่ยมมาก! ;)
สาเก

1
สำหรับผู้ที่ผูกพันC-hกับสิ่งอื่นในตัวจัดการหน้าต่าง: C-h wเทียบเท่ากับM-x where-is. C-h kเทียบเท่ากับM-x describe-key. C-h fเทียบเท่ากับM-x describe-function. C-h vเทียบเท่ากับM-x describe-variable. C-h ?เทียบเท่ากับM-x help-for-help. โปรดทราบว่าf1สามารถใช้แทนC-hไฟล์.
Ricardo

13

C-h w(หรือF1-w): where-isRET somecommandname RET

ทำในสิ่งที่คุณต้องการ - แสดงรายการคีย์ที่ผูกไว้โดยไม่มีข้อมูลเพิ่มเติม :)


13

สำหรับการรับคำสั่งแบบโต้ตอบที่เชื่อมโยงกับแป้นพิมพ์ลัด (หรือลำดับคีย์ในเงื่อนไข Emacs) โปรดดูคำตอบที่เลือก

สำหรับโปรแกรมที่ได้รับคำสั่งผูกไว้กับลำดับที่สำคัญที่กำหนดให้ใช้ฟังก์ชั่นkey-bindingหรือlookup-keyที่ใช้ลำดับที่สำคัญและส่งกลับคำสั่งของที่ถูกผูกไว้ ฟังก์ชั่นkey-bindingคือสิ่งที่C-h kใช้

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

ส่งคืนคำสั่งที่ถูกผูกไว้C-h mโดยการค้นหาในคีย์แมปปัจจุบันทั้งหมด ฟังก์ชันlookup-keyค้นหาในคีย์แมปเดียว:

(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

สำหรับการเขียนโปรแกรมโดยใช้ลำดับคีย์ทั้งหมดที่เชื่อมโยงกับคำสั่งที่กำหนดwhere-is-internalอาจเป็นฟังก์ชันที่ใช้ ชื่อของฟังก์ชันที่ลงท้ายด้วยinternalดูเหมือนจะแนะนำว่าไม่ใช่สำหรับผู้ใช้ Emacs ที่จะใช้ในไฟล์ init ของพวกเขา แต่ฟังก์ชันนี้ที่มี docstring ดูเหมือนจะแนะนำเป็นอย่างอื่น ใครก็ตามที่คิดจะใช้where-is-internalควรตรวจสอบก่อนว่าการรีแมปคีย์แทนสามารถบรรลุเป้าหมายได้หรือไม่

อีกทางเลือกหนึ่งสำหรับการค้นหาคีย์ที่ผูกไว้กับคำสั่งเฉพาะ (เช่นforward-char) คือsubstitute-command-keys(เช่น(substitute-command-keys "\\[forward-char]")) ซึ่งมีประโยชน์อย่างยิ่งในข้อความขนาดใหญ่


ดูจากเอกสารคำwhere-is-internalแนะนำก็ใช้ได้ นอกจากนี้ตามปกติแล้วเราใช้รูปแบบเช่นwhere-is--internal(สังเกตเส้นประคู่) สำหรับฟังก์ชัน "ส่วนตัว"
GergelyPolonkai

2
การใช้คำต่อท้าย-internalอธิบายไว้ที่นั่นgnu.org/software/emacs/manual/html_node/elisp/... ควรใช้สำหรับฟังก์ชัน C ภายใน
Tobias

4

คำถามเก่า แต่เพื่อประโยชน์ของผู้อ่านใหม่มีวิธีอื่น ๆ ที่ดีในการดูการผูกคีย์

M-x describe-bindings

แสดงรายการการเชื่อมโยงทั้งหมดที่มีอยู่ในปัจจุบันใช้ isearch เกิดขึ้น ฯลฯ เพื่อใช้ประโยชน์จากรายการนี้

M-x describe-prefix-map

สิ่งนี้แสดงการเชื่อมโยงทั้งหมดที่มีอยู่ในโหมดปัจจุบันคุณสามารถใช้บัฟเฟอร์การแสดงผลได้เช่นเดียวกับบัฟเฟอร์ Emacs แบบอ่านอย่างอื่นเช่นคุณสามารถค้นหาสตริงได้อย่างอิสระเป็นต้น

M-x describe-mode

นอกจากจะให้ข้อมูลทั่วไปเกี่ยวกับโหมดปัจจุบันแล้วยังแสดงรายการการเชื่อมโยงคีย์ทั้งหมดที่มี

M-x describe-minor-mode

คุณจะได้รับแจ้งให้ป้อนชื่อของโหมดรองจากนั้นจะแสดงข้อมูลและการผูกคีย์สำหรับโหมดรองนั้น

หมายเหตุ : ตัวอย่างด้านล่างใช้แพ็คเกจเพิ่มเติม (หาได้จากMELPA )

คีย์ใด

สิ่งนี้แสดงให้คุณเห็นการผูกมัดก่อนที่คุณจะต้องการ ป้อนคำนำหน้าตัวอย่างเช่นC-xหรือC-cและรายการการเชื่อมโยงที่มีอยู่ในคำนำหน้านั้นจะปรากฏขึ้น

คุณยังสามารถดูรายการการผูกคีย์ที่มีให้จากโหมดปัจจุบันโดยใช้:

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

การเชื่อมโยงwhich-key-show-top-levelกับคอร์ดหลักที่คุณเลือกมีประโยชน์ดังนั้นคุณจึงสามารถดูคีย์ที่มีให้จากทุกที่

ตัวอย่างเช่นC-s( isearch-forward) มีแผนที่หลักที่กว้างขวางซึ่งมักไม่ทราบ เช่นM-s oเริ่มoccurใช้สตริงการค้นหาปัจจุบันฉันไม่รู้เรื่องนี้มาหลายปีแล้วที่ใช้ Emacs การwhich-keyไปไหนมาไหนช่วยให้ฉันค้นพบอัญมณีหายากมากมายใน Emacs

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

คีย์คำแนะนำ

คีย์คำแนะนำทำงานในลักษณะเดียวกับที่which-keyฉันขอแนะนำให้ดูเพื่อเปรียบเทียบคุณสมบัติต่างๆ

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.