คำถามติดแท็ก keyboard-macros

3
จะบันทึกมาโครคีย์บอร์ดเป็นฟังก์ชั่น Lisp ได้อย่างไร?
บ่อยมากฉันจะต้องดำเนินการตามขั้นตอนที่ต้องใช้หลายจังหวะกุญแจ สำหรับเซสชั่นเดียวกันขั้นตอนเหล่านั้นสามารถบันทึกในแมโครแป้นพิมพ์ ตัวอย่างคือการบันทึกการดำเนินการค้นหา / แทนที่ที่ดำเนินการบ่อยเป็นแมโครแป้นพิมพ์ แต่มาโครนั้นจะหายไปเมื่อฉันออกจาก emacs ฉันจะบันทึกแมโครคีย์บอร์ดที่ใช้บ่อยเป็นฟังก์ชั่น Lisp ได้อย่างไร? เพื่อความเรียบง่ายฉันต้องการบันทึกการกระทำของการแทนที่ "abc" ด้วย "def" เป็นฟังก์ชันเพื่อให้ฉันสามารถนำมันกลับมาใช้ใหม่ในเซสชัน emacs ได้

2
วิธีจัดการบรรทัดถัดไปในแมโครแป้นพิมพ์
ฉันสร้างแมโครคีย์บอร์ดเพื่อรวมบรรทัดในบัฟเฟอร์โดยใช้: F3 C-n M-x join-line RET F4. มันทำงานได้ดียกเว้นเมื่อบรรทัดยาวเกินไปและเริ่มตัด - ซึ่งทำให้แมโครนี้ขึ้นอยู่กับความกว้างของเฟรม next-lineดูเหมือนจะไม่ไปที่บรรทัดจริงถัดไป แต่ไปที่ส่วน "การตัด" ของบรรทัดปัจจุบัน จะแก้ไขปัญหานั้นได้อย่างไร

2
สิ่งที่อาจเป็นกุญแจที่ไม่ได้ใช้งานบน Emacs ที่โดยทั่วไปสามารถใช้ในการผูกมาโครคีย์บอร์ดได้?
ผมอ่านที่ทางปกติคีย์ผูกไว้กับแมโครแป้นพิมพ์C-x C-k 0ไป9และจะAZ ตัวอย่างเช่นหลังจากที่เรากำหนดแมโครแป้นพิมพ์เราสามารถพิมพ์ C-x C-k bและ Emacs จะขอกุญแจเพื่อผูก และปุ่มที่สงวนไว้สำหรับจุดประสงค์นี้C-x C-k 0ไป9และจะAZ แต่มันเกี่ยวข้องกับการกดแป้นไม่กี่ครั้ง กุญแจอะไรที่ดีในการผูกสิ่งนี้กับ? ฉันพบว่าฉันสามารถผูกให้C-<return>หรือOption+ Enterบน Mac การทำงานของเครื่องเสมือน Ubuntu ใช้รุ่น Emacs GUI ดังนั้นจึงควรใช้งานได้ แต่เวอร์ชันเทอร์มินัลของ Emacs และ Emacs ดั้งเดิมบน Mac นั้นปฏิบัติต่อC-<return>หรือOption+ Enterเพียง<return>เพื่อจะไม่ทำงาน สิ่งที่อาจเป็นกุญแจที่ไม่ได้ใช้งานบน Emacs ที่โดยทั่วไปสามารถใช้ในการผูกมาโครคีย์บอร์ดได้? หรืออาจจะเป็นวิธีที่จะแสดงปุ่มง่ายๆทั้งหมดที่ไม่ได้ผูกไว้CtrlและMeta?

4
จะทำการบันทึกแมโครของแป้นพิมพ์ INCOMPLETE ต่อได้อย่างไร?
กรณีใช้คลาสสิก: คุณเริ่มบันทึกแมโคร: C-x ( helloคุณทำสิ่งบางอย่างสมมติว่า คุณเรียกใช้คำสั่งที่ส่งข้อผิดพลาดสมมติว่าC-g(เช่นคุณเรียกใช้โดยไม่ตั้งใจC-sและคุณต้องยกเลิกสิ่งนั้นด้วยC-gตอนนี้งานของคุณจะหายไป) ตอนนี้การบันทึกของคุณจะหายไป ฉันต้องการดำเนินการต่อที่ที่ฉันค้างไว้ก่อนที่ฉันจะรันคำสั่งที่ขัดจังหวะการบันทึกของฉัน ฉันดูC-h f start-kbd-macroแต่เขียนเป็นภาษา C ดังนั้นฉันจึงไม่สามารถปรับแต่งมันได้ ฉันยังตามล่าหาตัวแปรเช่นcurrent-kbd-macroกัน แต่ก็ไม่พบใครเลย มันสามารถกู้คืนได้? ปรับปรุง: ฉันไม่สามารถคิดออกว่าทำไมC-u C-x (ไม่ได้ทำงานสำหรับฉัน C-gแต่ฉันได้ค้นพบว่ามันเป็นเพราะฉันถูกทดสอบด้วย ปรากฎว่าC-gเป็นสิ่งพิเศษ - หากคุณทริกเกอร์ข้อผิดพลาดประเภทอื่นเช่น C-x ( M-: (signal 'quit nil) จากนั้นจะหยุดการบันทึก แต่last-kbd-macroจะมี"M-: M-( signal 'quit nil"แต่ด้วย C-x ( C-g สิ่งนี้จะหยุดการบันทึกและละทิ้งทุกสิ่งที่บันทึกไว้ ในฐานะผู้ใช้ Cg-happy (เช่นเดียวกับเพื่อนของฉันอย่างน้อยสองคน) นี่เป็นความแตกต่างที่ค่อนข้างโชคร้าย ฉันพยายามแก้ไขkeyboard-quitแต่ไม่มีสิ่งใดที่ฉันสามารถทำได้ ดูเหมือนว่าวิธีเดียวที่จะกู้คืนนี้จะผ่านrecent-keysโดยอัตโนมัติและการหาที่เริ่มต้น kbd แมโคร (หรือคล้ายกัน) kmacro-edit-lossageถูกเรียกว่าในขณะที่
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.