ถ้าฉันรู้ชื่อคำสั่ง 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-is
RET 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
ฉันขอแนะนำให้ดูเพื่อเปรียบเทียบคุณสมบัติต่างๆ