พฤติกรรมที่คุณกำลังมองหานั้นเป็นตัวเป็นตนในฟังก์ชั่น Emacs Lisp keyboard-quit
ถูกผูกไว้โดยค่าเริ่มต้นเป็น C-g
(ควบคุมกรัม) พฤติกรรมของมันเทียบเท่ากันในบริบทของ Emacs กับการทำงานปกติ C-c
ในเปลือก; มันจะขัดจังหวะสิ่งที่รหัส Lisp กำลังทำงานอยู่และวางคุณกลับไปที่ระดับบนสุด (โดยเฉพาะอย่างยิ่งถ้าคุณได้รับพร้อมท์ให้ป้อนข้อความใน minibuffer และตัดสินใจว่าคุณไม่ต้องการทำสิ่งที่มันกระตุ้นให้คุณ C-g เป็นวิธีที่คุณยกเลิก)
โดยค่าเริ่มต้นการกดปุ่ม Escape ครั้งเดียวจะทำหน้าที่เป็นคีย์คำนำหน้า Meta นั่นคือการผูกคีย์ที่เกี่ยวข้องกับคีย์ Meta (เช่น M-x
, execute-extended-command
) จะทำงานเช่นกันหากคุณกด Alt-x หรือหากคุณกด Escape จากนั้นกด X - Emacs จะไม่แยกความแตกต่าง กดปุ่ม Escape สามครั้งจะทำงาน keyboard-escape-quit
ซึ่งก็เหมือน keyboard-quit
แต่ด้วยพฤติกรรม "ทำในสิ่งที่ฉันหมายถึง" - สิ่งที่ฉันไม่เคยต้องการในการใช้ Emacs มาหลายปีแล้วและไม่รู้จริงๆจนกระทั่งเมื่อไม่กี่นาทีก่อน แต่คุณอาจพบว่ามันมีประโยชน์
การพูดในสิ่งที่คุณอาจพบว่ามีประโยชน์: คุณสามารถรับเอกสารเกี่ยวกับฟังก์ชั่น Emacs ผ่านทาง describe-function
ฟังก์ชั่นที่เรียกว่า C-h f FUNCTION-NAME RET
(นั่นคือกดและปล่อย Control-h กด f พิมพ์ชื่อฟังก์ชั่นที่พรอมต์กด Return) หรือ M-x describe-function RET FUNCTION-NAME RET
. สำหรับตัวแปรมันเหมือนกันยกเว้น C-h v
หรือ describe-variable
รวมถึงชื่อตัวแปร สำหรับการกดแป้นมัน C-h k
หรือ describe-key
และคุณพิมพ์คอร์ดหลักที่มีผลผูกพันที่คุณต้องการอธิบาย ทั้งสามฟังก์ชั่นรวมทั้ง C-h m
เพื่อดึงข้อมูลเอกสารเกี่ยวกับโหมดหลักและรองของบัฟเฟอร์ปัจจุบันมีประโยชน์อย่างมากในการค้นพบว่า Emacs ทำงานอย่างไรและมันสามารถทำอะไรได้บ้างและฉันกระตือรือร้นแนะนำให้คุณใช้เป็นวิธีที่ดีที่สุดและรวดเร็วที่สุดในการลดระดับที่ Emacs .
ตอนนี้ในที่สุดเพื่อตอบคำถามที่แท้จริงของคุณ: อาจเป็นไปได้ที่จะกำหนดค่าการจับคู่คีย์เริ่มต้นของ Emacs ใหม่เพื่อให้แตกต่างกับคีย์ Escape และคีย์ Meta อย่างไรก็ตามฉันไม่แนะนำให้คุณลองด้วยเหตุผลสองสามประการ
ครั้งแรกในขณะที่ฉันแน่ใจว่ามีวิธีที่จะทำมันจำเป็นต้องคลุมเครือและยุ่งยากและมันจะมีศักยภาพมากมายที่จะผิดไปในรูปแบบที่ไม่ชัดเจนซึ่งเป็นสิ่งที่ดีสำหรับ Emacs ทหารผ่านศึกไม่แนะนำให้เลือกจริงๆเมื่อคุณพยายามเรียนรู้การแก้ไข ถ้าคุณพยายามทำสิ่งที่ไร้เดียงสาและชัดเจน (เช่น M-: (global-set-key (kbd "ESC") 'keyboard-quit) RET
) คุณจะหยุดการทำงานของคีย์เมตาทั้งหมด การทำให้ถูกต้องจริง ๆ แล้วจะต้องลงไปสู่ระดับต่ำสุดของการประมวลผลเหตุการณ์ของ Emacs - ใส่ไฟหน้านำมาเชยและแพ็คอาหารกลางวัน (อาจเป็นอาหารกลางวันสองมื้อ)
ประการที่สองแม้ว่าคุณจะสามารถทำงานผูกพันได้อย่างน่าเชื่อถือมันก็ไม่ได้มาตรฐานมากนักในขณะที่ Emacs ที่คุณใช้ทุกที่จะมี C-g
ผูกพันกับ keyboard-quit
. โดยเฉพาะอย่างยิ่งในขณะที่เรียนรู้จากตัวแก้ไขมันแนะนำให้ทำความคุ้นเคยกับปุ่มลัดเริ่มต้นแทนการปฏิเสธสิ่งต่าง ๆ ในแบบที่จะทำงานกับไฟล์ init ของ Emacs ของคุณเท่านั้น (ถ้าคุณสามารถรับประกันได้ว่าคุณจะไม่เคยใช้ Emacs ทุกที่ยกเว้นในกล่องของคุณเองหรือว่าคุณจะสามารถติดตั้งไฟล์ init ได้เสมอเยี่ยมเลยลองใช้เลยสำหรับโหมดนี้ Vim ซึ่งเป็นส่วนหนึ่งของไลบรารีมาตรฐาน Emacs นับเป็น "ค่าเริ่มต้น" เนื่องจากคุณสามารถเรียกใช้บน Emacs ที่ติดตั้งอย่างเหมาะสมผ่าน M-x vim-mode RET
หรือคล้ายกัน)
tl; dr: คุณอาจจะทำอย่างนั้นกับ ESC แต่จะใช้แฮกเกอร์ที่น่ากลัวทำเช่นนั้นสมมติว่าเป็นไปได้และคุณควรทำความคุ้นเคยกับสิ่งอำนวยความสะดวกที่ Emacs ให้ไว้โดยค่าเริ่มต้นสำหรับเรียกพฤติกรรมที่คุณต้องการ .