Emacs

คำถาม & คำตอบสำหรับผู้ใช้ขยายหรือพัฒนา Emacs

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ถูกเรียกว่าในขณะที่

1
วิธีกำหนดไฮไลต์ไวยากรณ์เองสำหรับโหมดที่กำหนด
ฉันต้องการเปลี่ยนการเน้นไวยากรณ์ในของฉันlua-mode.elโดยไม่กระทบโหมดหลักอื่น ๆ เพียงเป็นตัวอย่างที่ฉันต้องการ "คำสำคัญ" ชอบif, then, elseที่จะอยู่ในอักษรตัวหนาและสีฟ้าเมื่ออยู่ในlua-mode(แทนที่จะเป็นสีชมพูเริ่มต้น) โดยไม่ต้องมีการเน้นรูปแบบเดียวกันในขณะที่แก้ไข.texไฟล์ที่มี AUCTeX จนถึงตอนนี้ฉันได้พยายามใส่รหัสต่อไปนี้ในของฉัน.emacsและจากนั้นในlua-mode.el: (custom-set-faces '(font-lock-builtin-face ((t (:foreground "maroon3")))) '(font-lock-comment-face ((t (:foreground "green4")))) '(font-lock-keyword-face ((t (:foreground "dark blue" :weight bold)))) '(font-lock-string-face ((t (:foreground "dark cyan"))))) แต่วิธีนี้ฉันได้รับการเน้นไวยากรณ์เดียวกันสำหรับทุกโหมดที่ฉันทำงานด้วย คำถามนี้อาจเกี่ยวข้อง: เปลี่ยนการเน้นไวยากรณ์โดยไม่ต้องเปลี่ยนโหมดหลักหรือไม่ มีวิธี (หวังว่าง่ายและทั่วไป) ในการทำเช่นนี้?

1
ใช้ Emacs เพื่อส่งทวีตหรือคิว
ฉันใช้QuitterหรือTwitterเพื่อส่งข้อความสั้น ๆ Queets / Tweets ของฉันส่วนใหญ่ผ่านเว็บอินเตอร์เฟส อย่างไรก็ตามฉันต้องการใช้ Emacs สำหรับมัน ทุกคนมีวิธีการ / โหมดที่ดีที่จะใช้กับ Quitter หรือ Twitter
10 web 

2
การจัดการรหัสผ่าน / คีย์สำหรับเครื่องหลายเครื่องใน emacs
ฉันเข้าสู่ระบบหลายเครื่องซึ่งเป็นส่วนหนึ่งของงานของฉัน (+ - 20 ต่อวัน) ฉันใช้เวลาสองสามวัน / สัปดาห์กับแต่ละเครื่อง ใช้ ftp จำนวนมากเท่านั้น สำหรับการเข้าถึงที่ไร้รอยต่อ Tramp นั้นน่าทึ่ง แต่มันก็เป็นการจัดการการเข้าถึงของเซิร์ฟเวอร์ด้วยมือที่น่าเบื่อ ฉันจัดการ. netrc และ a .ssh / config ด้วยมือพร้อมกับปุ่มใด ๆ บ่อยครั้งที่รหัสผ่าน / คีย์จะมีการเปลี่ยนแปลงในระหว่างที่ฉันใช้งานเครื่องและฉันจะต้องแก้ไขไฟล์อีกครั้ง มีวิธีที่มีประสิทธิภาพสำหรับการจัดการ (เครื่อง / รหัสผ่าน / กุญแจ) จากภายใน emacs หรือไม่?
10 tramp  ftp  passwords 

2
ข้ามไปยังบัฟเฟอร์เอกสารด้วยโหมด บริษัท
ฉันเพิ่งเปลี่ยนจากauto-complete-modeเป็นcompany-modeและฉันสนุก เมื่อเร็ว ๆ นี้ฉันต้องเขียนโค้ด Emacs Lisp ฉันเริ่มพิมพ์ฟังก์ชั่นของฉันผู้สมัครจะแสดงความสมบูรณ์ฉันกดF1และเอกสารเปิดขึ้นในบัฟเฟอร์อีกอัน ฉันต้องการข้ามไปยังบัฟเฟอร์เอกสารคู่มือแต่เมื่อฉันพิมพ์C-x oมันจะถูกปิด คำใบ้ใด ๆ

1
มีไลบรารีสำหรับฟิลด์อินพุตใน Emacs หรือไม่?
มีโหมด Emacs อยู่สองสามรูปแบบ (คล้าย): ส่วนต่อประสานที่กำหนดเองเป็นหนึ่งในนั้นโหมดข้อความ (อ่าน: ส่วนหัวของมัน) เป็นอีกโหมดหนึ่ง มีมากขึ้นของพวกเขา แต่น่าเสียดายที่ไม่ได้คล้ายกันมาก โดย "แบบฟอร์ม" ฉันหมายถึงบัฟเฟอร์ที่มีส่วนอ่านอย่างเดียวและสถานที่ที่กำหนดให้ใส่ข้อความ มันอาจจะมีหรือไม่มีปุ่ม (มันก็น่าจะยอมรับได้C-c C-cว่าเป็นกุญแจยืนยัน / ส่งมอบโดยไม่คำนึงถึงการมีปุ่มตกลง ) ฉันสนใจการเติมข้อมูลอัตโนมัติในฟิลด์ (โดยเฉพาะอย่างยิ่งการเปิดใช้งานฟิลด์ที่มีรายการของค่าจากชุดที่กำหนดบางรายการพูดคั่นด้วยเครื่องหมายจุลภาค) คำถามของฉันคือ: มีห้องสมุด Emacs ใดที่เปิดใช้งานง่าย (โดย "ง่าย" ฉันหมายถึงไม่สร้างใหม่ล้อ) สร้างรูปแบบดังกล่าวหรือฉันควรรหัสทุกอย่างด้วยตัวเอง? (ฉันคิดว่าสิ่งที่ฉันควรทำในกรณีหลังคือ (1) ตั้งค่าบางส่วนของบัฟเฟอร์แบบอ่านอย่างเดียว (2) เตรียมโหมดหลักพิเศษเพื่อให้เช่นTABและS-TABสลับระหว่าง "ฟิลด์" และ (3) อาจใช้บางอย่างเช่น Icicles หรือ Helm เพื่อเติมข้อความอัตโนมัติ)

1
วิธีใช้ไฟล์ที่ทำเครื่องหมาย Dired เป็นอาร์กิวเมนต์ของฟังก์ชัน Emacs Lisp ตามอำเภอใจ?
Dired ให้ฉันทำเครื่องหมายไฟล์และส่งชื่อเป็นอาร์กิวเมนต์ไปยังคำสั่งเชลล์โดยพลการ ฉันต้องการวิธีที่จะระบุชื่อที่ทำเครื่องหมายไว้เป็นอาร์กิวเมนต์ของฟังก์ชัน Emacs Lisp ไม่ว่าจะเป็นในตัวหรือที่ฉันเขียนเอง
10 elisp  dired 


2
โปรแกรมแทรกไฟล์ลงในบัฟเฟอร์ Dired
ฉันมีรายการชื่อไฟล์ (พร้อมเส้นทางแบบเต็ม) และฉันต้องการสร้างบัฟเฟอร์ Dired ที่แสดงรายการชุดไฟล์นี้ ฉันจะทำยังไงต่อไป? ฉันจะสร้างบัฟเฟอร์ Dired จากรายการชื่อไฟล์ได้อย่างไร โดยไม่ต้องใช้การอ้างอิงภายนอก
10 elisp  dired  files 

2
ทำให้โหมดเว็บเยื้องกับช่องว่างเสมอ
ฉันกำลังใช้ emacs web-modeและการแท็บในไฟล์ JS ดูเหมือนจะผิดปกติ ฉันได้ตั้งค่าแท็บให้เยื้อง 2 ช่องว่าง แต่เมื่อเยื้องถึง 8 ช่องว่างโหมดเว็บจะเปลี่ยนพวกเขาเป็นแท็บจากนั้นไปยังแท็บช่องว่าง 2 จนกว่าจะถึงอีก 8 และแปลงเป็นแท็บอื่น ฯลฯ ฉันสามารถหยุดสิ่งนี้ไม่ให้เกิดขึ้นและบอก emacs / web-mode ให้เว้นวรรคเยื้องเท่านั้น แก้ไข: นี่คือตัวอย่างฟังก์ชันซ้อนแบบสั้น: (function() { function() { function() { function() { function() { // Indenting problem. } } } } })() เห็นได้ชัดว่ามันทำงานได้ดีใน Emacs แต่คุณสามารถเห็นปัญหาการเยื้องที่นี่ ฉันจะทราบที่นี่ว่าสิ่งนี้เกิดขึ้นในโหมดจาวาสคริปต์

1
ปิดการสำรองข้อมูลอัตโนมัติสำหรับไฟล์เฉพาะ
เป็นเวลานานที่ฉันมี Emacs ทำการสำรองข้อมูลสำหรับไฟล์ทั้งหมดไว้ในโฟลเดอร์เดียว: (setq backup-directory-alist '(("." . "~/.emacs.d/backups"))) ผมแทบจะไม่เคยแวะไปที่backupsไดเรกทอรี แต่เมื่อเร็ว ๆ นี้ผมสังเกตเห็นว่ามันมีจำนวนมากของ*-autoloads.elไฟล์ที่ฉันไม่จำเป็นต้องสำรองข้อมูลสำหรับ ฉันจะบอก Emacs ไม่ให้ทำการสำรองไฟล์ประเภทนี้ได้อย่างไร?
10 backup 

3
การกำหนดหน้าต่างที่ชี้โดย“ หน้าต่างอื่น”
ใน emacs บ่อยกว่าที่ฉันชอบฉันท้ายด้วย 4 หน้าต่างหรือมากกว่า ฉันจะใช้ตัวอย่างนั้น: +--------|-----------+ | | | | 1 | 2 | | | | +--------+-----------+ | 3 | 4 | | +-----------+ | | 5 | +--------+-----------+ ฟังก์ชั่นจำนวนมากสามารถดำเนินการในother-window(ปกติหน้าต่างเดียวกันชี้โดยC-x o) scroll-other-windowที่มีประโยชน์เป็นพิเศษ อย่างไรก็ตามเมื่อเปิดหน้าต่าง 4 หน้าต่างขึ้นother windowไปไม่น่าจะเป็นหน้าต่างที่ฉันต้องการ มีวิธีง่ายๆในการจัดการที่จะตั้งother-windowโดยไม่ต้องเปลี่ยนเค้าโครงหน้าต่าง / บัฟเฟอร์? แน่นอนมันสามารถทำได้โดยใช้พวงC-x 4 bและC-bแต่ฉันไม่ต้องการเปลี่ยนเค้าโครง ตัวอย่างเช่น: หากการแก้ไขในหน้าต่าง4ในภาพด้านบนมีวิธีง่าย ๆ ในการตั้งค่าC-M-vให้เลื่อนหน้าต่าง1 ? หรือเพียงแค่สมมติว่าโฟกัสในหน้าต่าง3วิธีการตั้งค่าother-windowไปยังจุดที่หน้าต่าง2 …
10 window 


2
มีโหมด Emacs ที่สะดวกสำหรับการเขียนบทกวีหรือไม่?
ฉันลองค้นหาอย่างง่ายใน Google และ MELPA ด้วยคำหลักเช่น "emacs poetry mode" หรือ "emacs verse mode" แต่ไม่พบสิ่งใดที่สร้างขึ้นมาโดยเฉพาะเพื่อจุดประสงค์นี้ คู่มือนี้จะอธิบายถึงส่วนขยายทั่วไปบางส่วนtext-modeแต่ได้รับการออกแบบมาสำหรับ text-plus-markup ฉันกำลังมองหาการจัดรูปแบบข้อความ - บวก - โดดเด่น องค์กรมี#+BEGIN_VERSE/ #+END_VERSEมาร์กอัปซึ่งเก็บรักษาช่องว่างเมื่อส่งออก นั่นคือเท่าที่คุณจะได้รับจากสิ่งที่ฉันกำลังมองหา ฉันกำลังมองหาโหมดที่รู้วิธีการบางอย่างสำหรับการเยื้องการใช้อักษรตัวใหญ่และเครื่องหมายวรรคตอน คะแนนโบนัสหากมันเป็นการดีที่เกี่ยวกับการเคารพตัวแบ่งโดดเดี่ยวจากการประชุมเหล่านั้น

4
ฉันจะสืบทอดจากโหมด prog ขณะที่ยังคงรองรับ emacsen รุ่นเก่าได้อย่างไร
ฉันกำลังเขียนโหมดหลักสำหรับภาษาการเขียนโปรแกรม แต่ฉันต้องการสนับสนุน Emacs รุ่นเก่ากว่า prog-modeค่อนข้างใหม่ ฉันต้องการรับช่วงจากprog-modeถ้ามันถูกกำหนด แต่ยังคงทำสิ่งที่เหมาะสมเป็นอย่างอื่น วิธีที่ดีที่สุดคืออะไร ฉันควรจะdefalias prog-modeใช้ Emacsen รุ่นเก่าหรือว่าจะรบกวนโหมดอื่นหรือไม่หากพวกเขาทำสิ่งเดียวกัน

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