Emacs

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

2
ฉันจะป้องกันคำสั่งจากการใช้หน้าต่างเฉพาะได้อย่างไร
โดยทั่วไปฉันมีกรอบแยกออกเป็นสี่หน้าต่างโดยที่สองที่ด้านล่างอุทิศให้กับฉัน*compilation*และ*grep*บัฟเฟอร์ เมื่อเรียกดูข้อผิดพลาดในการรวบรวมnext-errorในที่สุดจะแทนที่*grep*บัฟเฟอร์ของฉันด้วยหนึ่งในไฟล์เป้าหมาย ฉันnext-errorจะกำหนดค่าให้ไม่ใช้หน้าต่างที่มี*grep*บัฟเฟอร์ได้อย่างไร กรณีการใช้งานเฉพาะของฉันคือnext-errorคำสั่ง แต่ยินดีต้อนรับคำตอบทั่วไปเพิ่มเติมเช่นกัน
14 buffers  window 

1
จะดูและแก้ไขไฟล์ค่าที่คั่นด้วยตัวคั่นขนาดใหญ่ได้อย่างไร?
ฉันใช้csv-modeเพื่อแก้ไขไฟล์ CSV ขนาดเล็กถึงขนาดกลาง แต่เมื่อเร็ว ๆ นี้ฉันได้ทำงานกับไฟล์ขนาดใหญ่ที่มีมากกว่า 40,812 รายการ csv-modeการดิ้นรนเพื่อจัดตำแหน่งและนำทางตารางและช้าเกินไปที่จะใช้งานได้ตามที่เป็นอยู่ ในการเปรียบเทียบ LibreOffice Calc สามารถซิปไฟล์ได้ มีวิธีง่ายๆในการcsv-modeจัดการกับตารางขนาดใหญ่หรือมีวิธีการที่ดีกว่าหรือไม่? ฉันรู้ที่เกี่ยวข้องกับคำถามกองมากเกิน วิธีแก้ปัญหาของมันคือการจัดเรียงเฉพาะส่วนของบัฟเฟอร์ในหน้าต่างที่มองเห็นได้ แต่สิ่งนี้ไม่ได้ช่วยแก้ปัญหาความเฉื่อยชาในกรณีของฉัน นี่คือไฟล์ตัวอย่าง ฉันพยายามทำให้มันใหญ่ แต่ไม่ใหญ่จนเกินไปจะทำให้ Emacs หยุดทำงานในคอมพิวเตอร์รุ่นเก่า

2
ฉันจะกำหนดขนาดแบบอักษรที่แตกต่างกันสำหรับบัฟเฟอร์และโหมดบรรทัดได้อย่างไร
ฉันมีบรรทัดนี้ในไฟล์ init.el ของฉันเพื่อกำหนดขนาดตัวอักษรในทุกเฟรม: (push '(font . "DejaVu Sans Mono-10") default-frame-alist) มันใช้งานได้ แต่ฉันต้องการให้ตัวอักษรที่ใหญ่กว่าในบัฟเฟอร์ทั้งหมดในขณะที่รักษาตัวที่เล็กกว่าสำหรับบรรทัดโหมด (ดังนั้นมันจึงสามารถพอดีกับข้อมูลเพิ่มเติมและทำให้เสียสมาธิน้อยลง) แนวคิดคือการตั้งค่านี้โดยอัตโนมัติโดยไม่ต้องเปลี่ยนขนาดตัวอักษรด้วย Cx C- + สำหรับทุกบัฟเฟอร์ที่เปิดอยู่ ฉันใช้ Emacs 25.0.50.1 เรียบเรียงจากลำตัวบนระบบ GNU / Linux แก้ไข: เพิ่งเพิ่มคำตอบที่แสดงว่าสามารถทำได้

3
การปิดวงเล็บที่ค้างอยู่ทั้งหมด
เมื่อเขียนรหัส lisp บางครั้งฉันลึกลงไปในนิพจน์ที่ซ้อนกันและทั้งหมดที่ฉันต้องการคือการใส่วงเล็บปิดที่หายไปทั้งหมด ตอนนี้ฉันแค่สอดมันไว้จนกว่าฉันจะได้ paren ที่ไม่ตรงกัน แต่มันไม่ได้มีประสิทธิภาพมาก มีคำสั่งใด ๆ ที่จะแทรกวงเล็บที่หายไปทั้งหมดหรือไม่? FYI ฉันใช้ smartparens เพื่อแทรก parens ที่ตรงกันโดยอัตโนมัติ ถึงกระนั้นบางครั้งฉันก็ต้องทำเช่นนี้

2
Magit ผลักดัน / ดึงความคืบหน้าการแสดง
ฉันไม่มีตัวบ่งชี้ที่เห็นได้ชัดถึงความก้าวหน้าของการผลัก / ดึง หลังจากดำเนินการคำสั่งที่เหมาะสมmagitพิมพ์ พุชไปที่ domain.tld: repo.git อย่างไรก็ตามไม่มีการบ่งชี้ความคืบหน้าเพิ่มเติมอีก ในการเชื่อมต่อเครือข่ายที่ช้าหรือหากข้อมูลที่จะส่งมีขนาดใหญ่กระบวนการอาจใช้เวลาพอสมควรดังนั้นมันจะดีถ้าmagitสามารถให้สัญญาณบ่งบอกถึงความคืบหน้า โดยปกติแล้ว*magit-process*บัฟเฟอร์ประกอบด้วยgitตัวบ่งชี้ความคืบหน้าของตัวเอง แต่คุณmagitจะบอกให้ส่งส่วนที่เกี่ยวข้องผ่านไปยังพื้นที่เสียงสะท้อนได้อย่างไร จะดียิ่งขึ้นถ้าตัวบ่งชี้ความคืบหน้าถูกเพิ่มเข้าไปในบรรทัดโหมดซึ่งจะช่วยให้ผู้ใช้ปิดmagit-statusบัฟเฟอร์และทำงานต่อไปในขณะที่gitกำลังยกของหนัก แก้ไข:ฉันไม่ได้มองหาบ่งชี้ว่าmagitจะผลักดัน / ดึงฉันรู้ว่าเพราะผมเพียงแค่กด/P Fฉันต้องการดูว่าขั้นตอนใดของการผลัก / ดึงคือ (เช่น (ไม่) การบรรจุการส่งสัญญาณ) และการกระทำนั้นได้ทำไปแล้ว โปรดจำไว้ว่าถ้าคุณเรียกใช้gitผ่านเทอร์มินัลมันจะพิมพ์บางอย่างเช่น ผลักไปที่ domain.tld: repo.git การนับวัตถุ: 29 เสร็จแล้ว การเขียนวัตถุ: 100% (15/15), 249.80 KiB | 28.00 KiB / s เสร็จแล้ว รวม 15 (เดลต้า 10), นำมาใช้ใหม่ 0 (เดลต้า 0) ถึง domain.tld: …
14 magit 

5
มีคำสั่ง `อธิบายคำสั่ง 'คล้ายกับคำสั่ง` อธิบายฟังก์ชั่น'?
ฉันใช้งานC-h fหนัก แต่นี่คือฟังก์ชั่นทั้งหมดใน Emacs ฉันมักจะสนใจฟังก์ชั่นแบบโต้ตอบเท่านั้นเช่นคำสั่ง มีคำสั่งที่เทียบเท่าหรือไม่? เป็นการดีที่ฉันต้องการ ido ก็เช่นกัน
14 help  ido 

2
ฉันจะดูตัวอย่างสูตร TeX แบบอินไลน์ในโหมดใดก็ได้ได้อย่างไร
ฉันจะดูตัวอย่าง TeX ภายในโหมดอื่นที่ไม่ใช่ AUCTeX หรือโหมด org ได้อย่างไร ฉันชอบที่จะเห็นสมการ TeX ใน jabber, erc และ markdown ถ้าฉันเคยเปลี่ยนมาใช้อีเมลของ Emacs ฉันก็คงจะอยากเห็นตัวอย่างที่นั่นด้วย
14 auctex  tex 

1
ในบัฟเฟอร์ที่หมดอายุให้วางจุดบนไฟล์ที่สำคัญที่สุดของไดเร็กทอรีนั้น
90% ของเวลาที่ฉันเยี่ยมชมไดเรกทอรีใน Emacs สิ่งแรกที่ฉันทำคือย้ายจุดไปยังไฟล์ที่เฉพาะเจาะจงและเปิด หลายครั้งที่ไฟล์ที่ฉันต้องการเปิดสามารถคาดเดาได้มาก ตัวอย่างเช่น หากมีไฟล์ในไดเรกทอรีนี้ผมมักจะตรงไปที่.texmaster.tex ที่รากของโครงการ Android AndroidManifest.xmlก็ทั่วไป ในไดเรกทอรีที่ฉันพัฒนาแพ็คเกจ emacs มันมักจะเป็นไฟล์หลักของแพ็คเกจ ปกติแล้วจะเป็น.elไฟล์เดียวเท่านั้นในไดเรกทอรีนี้ มีวิธีที่ฉันจะสามารถวางจุดบนไฟล์เหล่านี้โดยอัตโนมัติเมื่อฉันเปิดไดเรกทอรีเหล่านี้หรือไม่? นี้จะให้ความสะดวกสบายมาก (เพราะฉันสามารถเปิดได้โดยเพียงกดปุ่มRET) แต่ก็ยังให้ความยืดหยุ่นในการเยี่ยมชมไฟล์อื่น ๆ
14 dired 

2
วิธีค้นหาลำดับคีย์คืออะไร
บางครั้งฉันสังเกตเห็นพฤติกรรมที่ไม่คาดคิดเมื่อแก้ไขข้อความ การขอความช่วยเหลือครั้งแรกของฉันมักจะใช้C-h kเพื่อค้นหาว่าฟังก์ชันใดที่ถูกเรียกโดยลำดับของคีย์ที่กำหนด อย่างไรก็ตามบางครั้งเอกสารประกอบจะขัดแย้งกับพฤติกรรมที่สังเกตได้ ในกรณีเหล่านี้ฉันมักจะคิดว่าแพ็กเกจอื่น ๆ บางส่วนได้เชื่อมโยงกับฟังก์ชั่นหรือลำดับของคีย์และกำลังแก้ไขพฤติกรรมของมัน ฉันจะหา ที่ ฟังก์ชั่น hooking เป็นลำดับสำคัญของฉันได้อย่างไร ตัวอย่างหนึ่งที่ฉันพบเมื่อเร็ว ๆ นี้คือฉันกด"คีย์และเครื่องหมายคำพูดถูกแทรกที่จุดเริ่มต้นและจุดสิ้นสุดของพื้นที่ที่ใช้งานอยู่ ฉันสงสัยว่านี่ไม่ใช่พฤติกรรมของ Emacs ที่เป็นค่าเริ่มต้นดังนั้นฉันจึงเคยC-h k "ตรวจสอบว่ามีการเรียกใช้ฟังก์ชันใดบ้าง describe-keyเอกสารบอกว่าฟังก์ชั่นself-insert-commandที่ถูกเรียกว่าซึ่งเป็นฟังก์ชั่น electric-pair-modeที่จะทำให้เรื่องยาวสั้นหลังจากที่จำนวนของการทดลองและข้อผิดพลาดบางอย่างผมก็สามารถที่จะตรวจสอบว่าพฤติกรรมที่เกิดจาก ในอนาคตมีวิธีที่เร็วกว่าที่จะมาถึงข้อสรุปนี้กว่าที่จะปิดแพคเกจที่น่าสงสัยทีละครั้งจนกว่าจะหาผู้กระทำผิด?
14 keymap  hooks 

3
เริ่ม emacs daemons แยกกันสองรายการสำหรับคอนโซลและ GUI
โดยปกติผมเริ่ม emacs กับ GUI (server-start)และเริ่มต้นเซิร์ฟเวอร์ทันทีกับ ตอนนี้ฉันสามารถเปิดเอกสารในเซสชัน emacs ที่มีอยู่จากเทอร์มินัลผ่านemacsclient -n <file>หรือจากเบราว์เซอร์ไฟล์ได้อย่างง่ายดาย เมื่อเวลาผ่านไป แต่ผมต้องการที่จะทำงาน emacs emacsclient -tภายในอาคารผู้โดยสารของฉันโดยใช้ สิ่งนี้เกิดขึ้นบ่อยที่สุดเมื่อเขียนคอมไพล์บันทึกการกระทำหรือทำงานอื่น ๆ ที่มีขนาดเล็กมาก ในกรณีเหล่านั้นความจริงที่ว่าไฟล์ init ของฉันถูกโหลดในอินสแตนซ์ GUI ของ emacs หมายความว่าฉันไม่ได้รับการปรับแต่งใด ๆ ที่เฉพาะเจาะจงกับ TTY emacs ฉันรู้ว่าฉันสามารถวิ่งได้ emacs -nw -q -l "some-custom-init-file.el" แต่นั่นจะทำการบรรจุซ้ำทุกครั้ง ฉันจะได้สิ่งที่ดีที่สุดของทั้งสองโลกได้หรือไม่? มีวิธีตั้งค่า "TTY daemon" หรือไม่เพื่อให้ฉันสามารถใช้การปรับแต่งแยกต่างหากสำหรับการทำงานภายในเครื่องเทอร์มินัลกับการเยี่ยมชมไฟล์ในหน้าต่าง emacs ที่มีอยู่
14 daemon 

2
use-package -: init หรือ: config
มีกฎใดบ้างที่ผู้ใช้สามารถกำหนดได้ว่าต้องการการกำหนดค่าแพ็คเกจ:initหรือ:configไม่?

5
emacs มีตัวดูกระบวนการ (ตัวจัดการทรัพยากร) หรือเทียบเท่าหรือไม่
บางครั้ง emacs จะใช้งาน cpu 100% เห็นได้ชัดว่าเมื่อสิ่งนี้เกิดขึ้นมีปัญหากับกระบวนการควบคุมไม่ได้ แค่สงสัยว่ามีวิธีดูกระบวนการที่กำลังทำงานอยู่ทั้งหมดใน emacs หรือไม่? ชนิดเช่นยูนิกซ์ htop จอขั้นตอนของระบบการโต้ตอบและผู้ชม ... htop
14 process 

1
ไม่แสดงคำเตือน: การมอบหมายให้กับตัวแปรอิสระ (และอื่น ๆ )
ฉันจะระงับคำเตือน "การมอบหมายให้กับตัวแปรอิสระ" ได้อย่างไรเมื่อไบต์รวบรวมไฟล์ lisp emacs? จริงๆแล้วฉันสนใจที่จะระงับมันสำหรับบัฟเฟอร์เฉพาะเมื่อใช้ flycheck แต่ฉันเข้าใจว่านี่เป็นเพียงการส่งผ่านไปยังคอมไพเลอร์ไบต์ นอกจากนี้ยังเป็นการดีที่จะได้รับรายการคำเตือน / ข้อผิดพลาดทั้งหมดที่สามารถระงับได้ UPDATE : เพื่อความสมบูรณ์ขอให้ฉันชี้แจงว่ามีเหตุผล (ภาษาที่ไม่เชื่อเรื่องพระเจ้า) มากมายที่จะปิดการใช้งานคำเตือนของคอมไพเลอร์ ตัวอย่าง: เพื่อลดความยุ่งยากในการเปลี่ยนรหัสดั้งเดิมให้เป็นเฟรมเวิร์กที่บังคับใช้ผ้าสำลีเพื่อลบไฟล์และสูตรอาหารให้ทำงานภายในบริบทสดเพื่อลบเสียงรบกวนขณะแก้ไขปัญหาที่มีลำดับความสำคัญสูงกว่าหรือเพราะคอมไพเลอร์ผิด

2
โหมดคนจรจัดช้ากว่าการใช้เทอร์มินัลเป็น ssh มาก
ฉันกำลังใช้รสชาติ Macports ของ Emacs บน OSX Yosemite และได้ตรวจสอบทุก ๆ เธรดที่นี่เกี่ยวกับ Tramp ที่ช้าโดยไม่มีวิธีแก้ปัญหาใด ๆ คนจรจัดใช้งานได้ แต่มีความล่าช้าประมาณ 100 มิลลิวินาทีระหว่างทุกการกระทำ ไม่มีปัญหาที่ส่วนท้ายของเซิร์ฟเวอร์เนื่องจากความล่าช้านี้ไม่มีอยู่ถ้าฉันใช้เทอร์มินัล / iTerm เพียงแค่ ssh ไปยังเซิร์ฟเวอร์เดียวกัน ฉันคิดว่าปัญหาอาจถูก จำกัด อยู่ที่การแก้ไขไฟล์ แต่มันกลับกลายเป็นว่าแพร่หลาย ไม่ว่าฉันจะใช้แค่เปลือกระยะไกลหรือเพียงแค่กดM-x(พร้อมหางเสือ) มันก็ล่าช้าทั้งหมด ฉันได้ลองใช้ ssh, scp และ rsync เป็นวิธีการเชื่อมต่อโดยไม่มีวิธีการแก้ปัญหาใด ๆ ยังได้ลองControlMaster autoโดยไม่มีผลกระทบใด ๆ มีคนอื่นที่มีปัญหานี้และสามารถแก้ไขได้หรือไม่
14 shell  tramp  remote 

2
ทำไม Emacs ใช้เวลานานในการเริ่มต้นบน Windows มากกว่าบน Linux
การกำหนดค่า: ระบบเดียว ระบบปฏิบัติการ Windows 10 เป็นบูตคู่ ระบบปฏิบัติการ Ubuntu 15.10 เป็นบูตคู่ Emacs 25.0.1 พร้อม GUI ฉันมีหนึ่งdot-emacsไฟล์และทุกอย่างใน.emacs.dโฟลเดอร์ของฉัน(แพคเกจยังอยู่ใน.emacs.d) ไฟล์เหล่านี้ทั้งหมดอยู่ในโฟลเดอร์ Dropbox หนึ่งโฟลเดอร์ ใน Windows 10: ฉันเชื่อมโยงdot-emacsและ.emacs.dจากโฟลเดอร์โฮมใน Windows ไปยังตำแหน่งต่างๆใน Dropbox บน Linux / Ubuntu 15.10: ฉันได้ symlinked dot-emacsและ.emacs.dจากโฟลเดอร์บ้าน Ubuntu ของฉัน (/ home / user / ไปยังตำแหน่งใน Dropbox ด้วย ดังนั้นไฟล์ทั้งหมดที่เกี่ยวข้องกับ Emacs จะถูกเก็บไว้ในโฟลเดอร์ Dropbox หนึ่งข้ามระบบปฏิบัติการต่าง ๆ Windows …
14 start-up 

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