วิธีผูก C- [สำหรับจริง (จริงจังจริงสำหรับเวลานี้)


11

มีวิธีใดที่จะผูกC-[กับบางสิ่งบางอย่างและไม่มีM-การผูก (Meta) ทั้งหมดที่สับสน

ไม่ใช่ครั้งแรกที่คำถามนี้เกิดขึ้น น่าเสียดายที่โซลูชันเดียวที่นำเสนอในเธรดก่อนหน้านี้คือ)เฉพาะ Linux, b)ต้องใช้เครื่องมือภายนอก (เฉพาะ Linux อีกครั้ง) ที่ไม่มีส่วนเกี่ยวข้องกับ Emacs ในหลอดเลือดดำเดียวกันฉันสามารถใช้บางอย่างเช่นKarabinerบน OS X เพื่อขโมยC-[ลำดับก่อนที่ Emacs จะได้รับมา แต่นี่เป็นเรื่องที่น่ากลัวและมีราคาแพง

ระบุว่ามันเป็น Emacs ที่ยืนยันในการแปลC-[ไปESC, C-iไปTABและอาจจะคนอื่น ๆ ผมจะชอบมากที่จะทำลายความสัมพันธ์เหล่านี้และได้รับคีย์ลำดับที่มีค่ากลับ เมื่อเร็ว ๆ นี้ฉันวิ่งเต็มความเร็วไปที่ปัญหานี้และตำหนิโหมดสมาร์ทโฟนผู้บริสุทธิ์ที่เงียบ

ทางออกที่เป็นไปได้ที่เกี่ยวข้องfunction-key-mapและkey-translation-mapถูกกล่าวถึงที่นี่แต่ก็ไม่ได้อีกต่อไปหรือไม่ได้ทำงานตั้งแต่แรก (หรือฉันกำลังทำอะไรผิด) ฉันคิดว่ามันเป็นไปในทิศทางที่ถูกต้องว่า


3
Emacs ไม่ยืนยัน "ในการแปลC-[เป็นESC" ทั้งสองเป็นสิ่งเดียวกัน ในทำนองเดียวกันC-iและTABเป็นชื่อที่แตกต่างกันสำหรับรหัสควบคุม ASCII เดียวกัน
Drew

2
@Drew ไม่ชัดเจนเลยว่าชุดคีย์กับตัวควบคุมต้องแม็ปกับรหัสควบคุม ASCII (ซึ่งมีเพียง 32) ในแอปพลิเคชัน GUI (หรือห่าแม้ใน xterm ซึ่งมีโหมด modifyOtherKeys ส่งลำดับหนีไม่ซ้ำกันในหลายกรณี แต่ผมไม่แน่ใจว่าเกี่ยวกับเหล่านี้โดยเฉพาะ)
Random832

3
@ Random832: คุณมีสิทธิที่จะแยกแยะกุญแจจากตัวอักษร มันค่อนข้างสมเหตุสมผลและตรงไปตรงมาสำหรับตัวแก้ไขในการแม็พลำดับคีย์ C-[ (กดCtrlและกด[) กับตัวC-[ควบคุม(อาคาอักขระ) แต่ไม่มีนั่นไม่จำเป็นสำหรับผู้ออกแบบตัวแก้ไข และใช่ Emacs ทำเช่นนั้น และเป็นอักขระตัวเดียวกัน แต่คีย์+ และไม่จำเป็นต้องถูกแมปกับอักขระใด ๆ ESCC-[ESCCtrl[Esc
Drew

คำตอบ:


8

ดัดแปลงมาจากการกำหนดค่าของฉัน :

(define-key input-decode-map [?\C-\[] (kbd "<C-[>"))
(global-set-key (kbd "<C-[>") 'butterfly)

เห็นได้ชัดว่าจะใช้งานได้ใน GUI เท่านั้น

แก้ไข: โปรดทราบว่าinput-decode-mapเป็นขั้วท้องถิ่นซึ่งหมายถึงการปรับเปลี่ยนก็จะไม่ทำงานหากคุณใช้แต่จะทำอย่างไรถ้าคุณกำลังใช้emacsclient emacsฉันได้แก้ไขปัญหาในการกำหนดค่าของฉันโดยห่อไว้ในคำสั่งปฏิบัติการบนเฟรมและเพิ่มลงในafter-make-frame-functionsตะขอ


ขอบคุณที่ปรากฏ Legit! ฉันสงสัยว่ามีวิธีป้องกัน Emacs จากการปฏิบัติ Meta และ ESC เป็นสิ่งเดียวกันหรือไม่ นอกจากนี้ฉันยังสงสัยด้วยว่าฉันแค่ทำศัพท์เกี่ยวกับ Emacs และไม่คิดอะไรตรงนี้
zeRusski

1
นั่นเป็นคำถามที่แตกต่างโปรดเปิดใหม่สำหรับคำถามนั้น
wasamasa

การมี<C-i>และ<C-[>ผูกพันกลับไปที่TABและESCในแผนที่โลกอย่างที่คุณแนะนำในการกำหนดค่าของคุณทำให้ล่ม Emacs ของฉันทุกครั้งที่ฉันกด em:
zeRusski

1
เมื่อพิจารณาว่าคุณเป็นคนที่มีปัญหาในการถือหางเสือกระแทกกับการป้อนข้อมูลของตัวอักษร "j"ฉันตำหนิ Emacs ของคุณที่ทำผิดพลาดและขอแนะนำให้คุณลองอีกตัวหนึ่งสำหรับ OS X
wasamasa

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