โดยทั่วไปแล้วด้วยเหตุผลทางประวัติศาสตร์ emacs จะปฏิบัติกับTAB
รหัสและรหัสC-i
เดียวกัน cf เอกสารเสียงกระเพื่อม emacs บนปุ่มฟังก์ชั่นหรือคำตอบของ abo-abo สำหรับคำถาม "ความแตกต่างระหว่าง TAB และอะไร" .
หมายเหตุ:ในบทความนี้พิมพ์ซ้ำเป็น
TAB
,<tab>
และC-i
; tabและCtrl+ iในขณะที่ปุ่มทางกายภาพบนแป้นพิมพ์อย่างไรก็ตามในขณะนี้ emacs ปฏิบัติ
TAB
และC-i
เป็นสิ่งเดียวกันคือ->(equal (kbd "TAB") (kbd "C-i"))
t
อย่างไรก็ตามเนื่องจากเราไม่ได้อยู่ในก้อนหินแห่งการคำนวณอีกต่อไปฉันจึงพบว่าสิ่งนี้น่ารำคาญอย่างยิ่ง มีข้อเสนอแนะเล็กน้อยสำหรับสิ่งที่สามารถทำได้เพื่อแก้ไขปัญหานี้เช่น
"ฉันจะผูกคำสั่งกับ Ci โดยไม่เปลี่ยน TAB ได้อย่างไร"
- โซลูชันของ Treyไม่ทำงานสำหรับฉันตัวแปร
local-function-key-maps
จะไม่เปลี่ยนแปลง การแก้ไขให้ใช้delete
แทนที่จะdelq
ส่งผลให้เกิดตัวแปรที่แก้ไข แต่ไม่นำการแก้ไข ... tabและCtrl+ iยังคงเหมือนเดิม - การแปลไปที่แผนที่ไฮเปอร์ดูเหมือนว่าจะเป็นวิธีแก้ปัญหาในยุค 1980 ... ฉันอาจต้องการใช้Hyper+ iเช่นกัน
- โซลูชันของ Treyไม่ทำงานสำหรับฉันตัวแปร
การใช้
input-decode-map
แผนที่ถึงCtrl+ iกับโค้ดควบคุม post-ASCII บางอย่างเกือบเป็นสิ่งที่ฉันกำลังมองหา ยกเว้นว่ามันไม่ทำงานอย่างถูกต้องกับkbd
ความหมายแมโครที่หนึ่งจะต้องปรับเปลี่ยนทุกบิตของรหัสที่มาที่จะผูก+Ctrl iเนื้อหานี้เป็นทางออกที่ดีที่สุดเนื่องจากรหัสต้นฉบับทั้งหมดได้รับการแก้ไขอย่างถูกต้องใช้
(kbd "<tab>")
สำหรับการtabและ(kbd "C-i")
(ซึ่งแปลว่าจะ(kbd "TAB")
คือ\t
ตัวอักษร) สำหรับCtrl+ i ไม่ทำงานแต่คุณจะมีการปรับเปลี่ยนทุกไฟล์ที่มาซึ่งใช้ผิดประเภทของtab[อ่านที่: keycodeTAB
] ซึ่งเป็นที่น่ารำคาญ
นี้ได้รับการแนะนำเช่นปัญหาใน GitHubและใน emacs.sx เช่นกัน
ไม่มีวิธีแก้ปัญหาเหล่านี้ดูเหมือนจะเป็นทางออกที่แท้จริงฉันควรพิจารณาวิธีแก้ปัญหาหรือแฮ็ก ( ข้อผิดพลาดที่มีอยู่)
มีวิธีออกมีไปบังคับ emacs เพื่อทำแผนที่tabการ
(kbd "<tab>")
และ(kbd "TAB")
ในขณะที่Ctrl+ iถูกแมปไป(kbd "C-i")
สั้น ๆ ของ modyfing รหัส emacs แหล่งที่มา?วิธีการนี้ควรไม่ปรากฏแก่ผู้ใช้อย่างสมบูรณ์ซึ่งหมายความว่ารหัสที่tabคล้ายกัน
<tab>
และTAB
ควรแมปไปที่การรวมหนึ่งในขณะที่รหัสCtrl+ ilikeC-i
ควรแมปไปที่การรวมอื่น
ในหมายเหตุที่จริงจังน้อยกว่า: นักพัฒนา emacs ที่นี่ใครสามารถแสดงความคิดเห็นว่าจะมีการเปลี่ยนแปลง / แก้ไขในซอร์สโค้ด emacs ในบางจุด?
kbd
ให้แปลแท็บเป็น [แท็บ] มันจะไม่ทำงานสำหรับส่วนที่โหลดไว้ของ Emacs
TAB
และC-i
(รหัสที่ไม่คีย์)TAB
เป็นหนึ่งเดียวกันโดยความหมายของ