Emacs

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

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

1
ฉันจะแก้ไขปัญหา Emac ที่ช้ามากได้อย่างไร
ฉันกำลังเขียนเอกสารและฉันมีปัญหากับการทำงานของ Emacs ที่ฉันคิดว่าเพิ่งปรากฏเมื่อวานนี้ ฉันไม่ได้ทำการเปลี่ยนแปลงใด ๆ ในไฟล์ init หรือติดตั้งแพ็คเกจใหม่ใด ๆ ปัญหาคือว่าในขณะที่ฉันกำลังเขียนมีความล่าช้าที่เห็นได้ชัดมากระหว่างการกดตัวอักษรบนแป้นพิมพ์และทำให้พวกเขาปรากฏบนหน้าจอ บางครั้งฉันดูพวกเขายังพิมพ์อยู่บนหน้าจอหลังจากพิมพ์คำเสร็จ ฉันไม่ทราบว่ามีปัญหาอื่น ๆ ยกเว้นความเร็วในการพิมพ์ (ฉันเดาได้แค่ว่ามี) แต่ฉันไม่ได้สังเกตเห็น สิ่งที่สามารถทำให้เกิดปัญหานี้? มันเกิดจาก Emacs หรือเป็นเพราะประสิทธิภาพของพีซีของฉัน? โดยทั่วไปแล้วตัวแปรที่มีผลต่อประสิทธิภาพของ Emacs คืออะไร? เวอร์ชั่นของฉัน Emacs คือ GNU Emacs 24.3.1 โหมดแอคทีฟที่สำคัญคือ: น้ำยาง และโหมดที่ใช้งานเล็กน้อยคือ: สมบูรณ์อัตโนมัติ Auto-องค์ประกอบ Auto-การบีบอัด Auto-การเข้ารหัสลับ กะพริบตาเคอร์เซอร์ ชื่อไฟล์เงา font-Lock ทั่วโลกสมบูรณ์อัตโนมัติ Global-Font-Lock Global-Hl-Line สายจำนวน เมาส์ล้อ เชลล์ Dirtrack แสดง Paren Smartparens Smartparens …

3
ฉันจะทำอย่างไรเพื่อเร่งความเร็วการเริ่มต้นใช้งาน
ฉันสามารถทำสิ่งพื้นฐานบางอย่างเพื่อลดเวลาเริ่มต้นได้อย่างไร มีสิ่งใดที่ฉันควรให้ความสนใจเป็นพิเศษ หมายเหตุ: เวลาเริ่มต้นสามารถลดลงได้โดยการเริ่มต้น Emacs น้อยลง (หนึ่งครั้งต่อเซสชัน) และการเปิดไฟล์ในอินสแตนซ์ที่กำลังทำงานอยู่ คำถามนี้เกี่ยวกับการลดเวลาเริ่มต้นให้น้อยที่สุดสำหรับการเริ่มเซสชันหรือเวลาอื่น ๆ เมื่อจำเป็นต้องเริ่มต้น Emacs ดูคำถามเดียวกันที่ได้รับการตอบใน Stack Overflow พร้อมกับคำถามและคำตอบคะแนนมากกว่าบุ๊คมาร์ค "ที่ชื่นชอบ" กว่า 50 และ 30 คำตอบที่ดีที่นี่ควรเป็นมากกว่าสิ่งที่มีอยู่ใน Stack Overflow

3
วิธีการเลือกเชอร์รี่อย่างง่ายดายด้วย magit?
ฉันใช้ magit มาสองสามเดือนแล้วและฉันชอบมันมาก แต่สิ่งหนึ่งที่ฉันยังทำในอาคารผู้โดยสารคือการเก็บเชอร์รี่ วิธีง่ายๆในการทำเช่นนี้คืออะไร?
40 magit 

2
ทำไม elisp ไม่มี namespaces?
ถาม:ทำไมเอลลิสจึงไม่มีเนมสเปซและเราจะหามาได้อย่างไร Elisp ไม่มีเนมสเปซอื่นนอกจากโกลบอลซึ่งนำไปสู่การเขียนโค้ดของการเติมคำนำหน้าฟังก์ชันโกลบอลตัวแปรและค่าคงที่ทั้งหมดด้วยคำนำหน้าที่ไม่ซ้ำใคร นอกเหนือจากปัจจัยความน่ารำคาญใจแล้วมันยังทำให้ฉันกลายเป็นประเด็นที่เดือดดาลจาก 1) จำนวนไลบรารีและแพ็คเกจที่ยิ่งใหญ่และ 2) การมีอยู่ของฟังก์ชันและตัวแปรดั้งเดิมที่ไม่เคารพต่อคำนำหน้าหรือ มีนิสัยแปลก ๆ พอสมควรว่าไม่มีตัวเลือกคำนำหน้าดี ๆ ที่พวกเขาสามารถใช้ได้ นอกจากนี้ยังหมายถึงความพยายามเป็นระยะ ๆ ในการหาเหตุผลเข้าข้างตนเองรหัสเก่า (เช่นเดียวกับการเปลี่ยนจากclเป็นcl-lib) เป็นจำนวนงานที่ไม่สำคัญ (แม้ว่าฉันจะดีใจในการทำความสะอาด แต่ฉันก็ยังขาดน้ำตาทุกครั้งที่พิมพ์อะไรเช่นนี้cl-find) ฉันออกไปเดินเล่นรอบ ๆ เพื่อดูว่าฉันจะรู้ได้ไหมว่าทำไมเอลลิสยังคงไม่มีเนมสเปซหลังจากใช้งานไปหลายสิบปี แต่รู้สึกประหลาดใจเล็กน้อยที่การเก็บเกี่ยวเล็กน้อย หน้าวิกิพีเดียใน namespacesค่อนข้างสั้น Nic Ferrierมีการแก้ไขปัญหาอีกต่อไปเล็กน้อยและมีหัวข้อล่าสุดเกี่ยวกับemacs-develเกี่ยวกับเรื่องนี้เช่นกัน มีเธรดสแต็คโอเวอร์โฟลว์เก่าจากปี 2010 ที่กล่าวถึงความเป็นไปได้ในการใช้มาโครในการติดตั้งเนมสเปซ ตัวอย่างของวิธีการแมโครอื่นสามารถพบได้ที่นี่ มีการใช้งานอย่างน้อยสอง ( ที่นี่และที่นี่พร้อมคำอธิบายของหลังที่นี่) ออกไปที่นั่น แต่พวกเขาไม่ได้เห็นกิจกรรมมากนักเป็นเวลาสองปีและฉันไม่ได้ทำงานในห้องสมุดใด ๆ ที่ใช้พวกเขา ฉันคิดว่าถ้าการเพิ่มเนมสเปซเป็นเรื่องง่าย ดังนั้น: อะไรคืออุปสรรคทางเทคนิคในการเพิ่มเนมสเปซลงใน elisp การเพิ่มเนมสเปซทำลายรหัสที่มีอยู่จำนวนมากหรือไม่ ฟังก์ชั่นนี้เป็นบางสิ่งที่จำเป็นต้องเป็นออร์แกนิกเป็นเอลิค (เปลี่ยนล่ามเอง) หรือมันสามารถสร้างขึ้นมาจากด้านบนผ่านมาโครได้หรือไม่?
40 elisp 

9
ฉันจะเริ่มเรียนรู้ Emacs Lisp ได้อย่างไร
พื้นหลัง: ฉันส่วนใหญ่เป็นผู้ใช้ vi และกำลังแปลงเป็น Emacs วางพื้นฐานและตอนนี้ใช้สำหรับการเขียนโค้ดใน C และ Python บางอันพร้อมกับวางแผนที่จะทำการแปลง R ด้วย ฉันเขียน LISP (Common) LISP เป็นเวลาหลายปีกว่าสองทศวรรษที่แล้วตอนที่ฉันเรียนอยู่ระดับปกรณ์ แต่ตอนนี้ฉันหมดแรงลงอย่างมาก (สามารถเขียนสวัสดีโลกได้ คำถาม: สิ่งที่คุณจะแนะนำสำหรับคนที่อยู่ในตำแหน่งของฉันเพื่อเรียนรู้เกี่ยวกับสภาพแวดล้อม Emacs LISP และเริ่มแฮ็ค Emacs มีหนังสือบล็อกแหล่งข้อมูลที่ฉันควรอ่านแบบฝึกหัดที่ฉันควรทำหรือไม่

4
จะแยกไฟล์ออกจาก Projectile ได้อย่างไร?
ฉันใช้การตั้งค่า helm-projectile จากโหมโรงและมันได้รับการปรับปรุงอย่างมากในกระบวนการทำงานของฉัน ปัญหาเดียวที่เหลืออยู่คือไฟล์ที่สร้างขึ้นอัตโนมัติ (เช่นสร้างโดย CMake) ซึ่งแสดงขึ้นในระหว่างการดำเนินการ helm-grep และการดำเนินการที่คล้ายกัน คำถาม : มีวิธีการแยกไฟล์ในแผนผังโฟลเดอร์โครงการจาก Projectile หรือไม่?
39 projectile 

2
การตรวจสอบการสะกดคำอัจฉริยะในโหมดองค์กร
ตามค่าเริ่มต้นผลลัพธ์ของการทำงานM-x ispell-bufferในโหมดองค์กรจะน่าผิดหวังมาก Ispell ดูภายใน:PROPERTY:ลิ้นชักซึ่งโดยทั่วไปจะมีสิ่งต่าง ๆ เช่น :ID: 797495bd-581b-4a42-883b-c2a55a08f08a พยายามแก้ไขคำสั่ง org! ยกตัวอย่างเช่นมันบ่นเกี่ยวกับSRCใน #+BEGIN_SRC emacs-lisp มันเข้าไปในบล็อก org ฉันคิดว่าสิ่งนี้อาจเป็นประโยชน์สำหรับบล็อกที่ชอบ#+BEGIN_QUOTEแต่ในบล็อกซอร์สโค้ดมันไร้สาระ มีแพ็คเกจที่แก้ไขทั้งหมดนี้หรือไม่? ฉันชอบที่จะสะกดคำตรวจสอบการเขียนของฉัน แต่จำนวนของเท็จบวกที่ฉันได้รับทำให้มันเป็นไปไม่ได้ หากมีความสำคัญตัวตรวจสอบการสะกดคำของระบบปฏิบัติการจะเป็นตัวเลือก

7
เบราว์เซอร์ไดเรกทอรีต้นไม้?
ฉันรักที่เลวร้าย แต่บางครั้ง (โดยเฉพาะอย่างยิ่งเมื่อถ่ายภาพหน้าจอ) ฉันต้องการดูโครงสร้างต้นไม้ของไดเรกทอรีและลูก ๆ ของมันคำสั่ง la the tree (1) มีเบราว์เซอร์ไดเรกทอรีต้นไม้สำหรับ Emacs หรือไม่?

12
วิธีสลับไปมาระหว่างสองตำแหน่งในบัฟเฟอร์
บางครั้งฉันพบว่าตัวเองสลับกันระหว่างสองฟังก์ชั่นที่ฉันแก้ไขร่วมกันบ่อยๆ ในสถานการณ์เหล่านี้มันน่าเบื่อและเจ็บปวดที่จะทำต่อC-s <functionname>เพื่อสลับไปยังฟังก์ชั่นอื่น ๆ แล้วหาที่ที่ฉันแก้ไขก่อนหน้านี้ ฉันจะตั้งค่าตัวทำเครื่องหมายแล้วข้ามไปมาระหว่างสองตำแหน่งในบัฟเฟอร์ได้อย่างง่ายดาย

4
วิธีการแทนที่การผูกโหมดหลัก
บางครั้งการโยงคีย์โกลบอลของฉันถูกเขียนทับโดยโหมดหลัก ตัวอย่างง่ายๆคือการตั้งค่าต่อไปนี้ในไฟล์ init ของฉัน (global-set-key (kbd "C-j") 'newline-and-indent) แต่น่ารำคาญที่การเชื่อมโยงปุ่มกดนี้ถูกซ่อนไว้ในโหมดหลัก "Lisp Interaction" ซึ่งเป็นโหมดเริ่มต้นของบัฟเฟอร์รอยขีดข่วน เมื่อฉันพบว่าตัวเองอยู่ในสถานการณ์ที่เป็นโหมดหลัก (หรือโหมดรอง) กำลังซ่อนปุ่มลัดส่วนกลางของฉันฉันจะเอามันกลับมาได้อย่างไร หมายเหตุ: คำถามของฉันไม่ใช่"ฉันจะผูกC-jไว้newline-and-indentในโหมด" Lisp Interaction "ได้อย่างไร" ฉันสนใจคำตอบทั่วไปเพิ่มเติมเกี่ยวกับวิธีจัดการกับ keymaps ที่ขัดแย้งหรือ keybindings ผู้ใช้ที่ถูกซ่อนโดยโหมดหลัก / รองบางอย่าง

2
เอาต์พุตเชลล์แปลก ๆ เมื่อใช้ IPython 5
ฉันเพิ่งอัพเกรดเป็น IPython เวอร์ชั่นล่าสุดและตอนนี้มีบางอย่างผิดปกติเมื่อใช้งานใน emacs เมื่อใช้ในขั้วปกติทำงานดี (สีแท็บเสร็จ ฯลฯ ) แต่ทั้งในM-x eshellหรือM-x shellแทนที่จะ outputing In [1]:ก็จริงเอาท์พุท[?12l[?25hและเอาท์พุทจะOut[1][J[?7h[?12l[?25h[?2004l[?7hOut[1]: อาจเป็นคุณสมบัติบางอย่างของเครื่องเทอร์มินัลที่ไม่สามารถใช้ได้กับ emacs ที่ใช้โดย IPython แต่ฉันต้องการทราบว่าเป็นรุ่นใด Terminal.app: In [1]: 2+2 Out[1]: 4 Emacs [?12l[?25h2+2 [J[?7h[?12l[?25h[?2004l[?7hOut[1]: 4
37 shell  eshell  ipython 



3
คำต่อคำแบบอินไลน์และโค้ดพร้อมเครื่องหมายคำพูดในโหมดองค์กร
ในโหมด Org ฉันสามารถล้อมข้อความด้วย=หรือ~เพื่อวางข้อความในinline verbatim หรือ code mode อย่างไรก็ตามเรื่องนี้ล้มเหลวถ้าข้อความที่มีคำพูดและผมก็ไม่สามารถหาคำอธิบายหรือแก้ปัญหาในเอกสาร ตัวอย่างเช่น: =hello= แสดงผลเป็นคำต่อคำ ~hello~ แสดงผลเป็นรหัส =hello'= ไม่สามารถแสดงผลเป็นคำต่อคำ ~hello'~ ไม่สามารถแสดงผลเป็นรหัสได้ ทางออกเดียวที่ฉันพบจนถึงตอนนี้คือการใส่ตัวอักษรที่มองไม่เห็นเช่นการพิมพ์C-x 8 <RET> 200b <RET>ตามที่อธิบายไว้ในคำถามนี้ ทำไมนี่ (มันเป็นข้อผิดพลาด?) และฉันจะหลีกเลี่ยงปัญหานี้ได้อย่างไรโดยไม่ต้องใส่ตัวอักษรที่มองไม่เห็น?
37 org-mode 

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