ถ้าฉันรู้ชื่อคำสั่ง emacs ให้พูดว่า "goto-line"; จะเกิดอะไรขึ้นถ้าฉันต้องการสอบถามว่ามีลำดับคีย์ใด ๆ ที่ผูกกับคำสั่งนี้หรือไม่
และในทางกลับกันเมื่อกำหนดลำดับคีย์ฉันจะค้นหาชื่อคำสั่งได้อย่างไร
ถ้าฉันรู้ชื่อคำสั่ง emacs ให้พูดว่า "goto-line"; จะเกิดอะไรขึ้นถ้าฉันต้องการสอบถามว่ามีลำดับคีย์ใด ๆ ที่ผูกกับคำสั่งนี้หรือไม่
และในทางกลับกันเมื่อกำหนดลำดับคีย์ฉันจะค้นหาชื่อคำสั่งได้อย่างไร
คำตอบ:
ในการค้นหาการเชื่อมโยงคีย์สำหรับคำสั่งคุณสามารถใช้คุณลักษณะ "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 ?
C-h w <function name>เพื่อทราบเพียงที่สำคัญคือไม่ได้เอกสารฉบับเต็ม ในทางกลับกันคุณสามารถทำได้C-h c <key sequence>เพื่อเพียงแค่รู้ว่าฟังก์ชันใดที่เชื่อมโยงกับลำดับคีย์
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ไฟล์.
C-h w(หรือF1-w): where-isRET somecommandname RET
ทำในสิ่งที่คุณต้องการ - แสดงรายการคีย์ที่ผูกไว้โดยไม่มีข้อมูลเพิ่มเติม :)
สำหรับการรับคำสั่งแบบโต้ตอบที่เชื่อมโยงกับแป้นพิมพ์ลัด (หรือลำดับคีย์ในเงื่อนไข 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(สังเกตเส้นประคู่) สำหรับฟังก์ชัน "ส่วนตัว"
-internalอธิบายไว้ที่นั่นgnu.org/software/emacs/manual/html_node/elisp/... ควรใช้สำหรับฟังก์ชัน C ภายใน
คำถามเก่า แต่เพื่อประโยชน์ของผู้อ่านใหม่มีวิธีอื่น ๆ ที่ดีในการดูการผูกคีย์
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ฉันขอแนะนำให้ดูเพื่อเปรียบเทียบคุณสมบัติต่างๆ