Emacs

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

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

1
จะรู้สถานะของบัฟเฟอร์ที่มองเห็น / ได้อย่างไร
ฉันกำลังเขียนส่วนขยายที่พูดถึงกระบวนการภายนอกดังนั้นจึงเป็นการกำหนดให้ลดจำนวนคำขอ 'hey whats up' เมื่อบัฟเฟอร์ของฉันไม่ได้โฟกัส ดังนั้นวิธีที่ดีที่สุดในการรับรู้คืออะไร: เมื่อบัฟเฟอร์ของฉันสามารถมองเห็นและมุ่งเน้น เมื่อบัฟเฟอร์ของฉันสามารถมองเห็นได้ แต่ไม่ได้โฟกัส เมื่อบัฟเฟอร์ของฉันไม่สามารถมองเห็นหรือไม่โฟกัส
16 elisp  buffers  focus 

1
มีส่วนขยาย 'ยกเลิกท้องถิ่น' สำหรับ Emacs หรือไม่
มันเกิดขึ้นบ่อยครั้งที่ฉันต้องการยกเลิกการเปลี่ยนแปลงในเครื่องหรือตามบรรทัด ตัวอย่างเช่นเมื่อฉันเปลี่ยนหลายบรรทัดในซอร์สโค้ดและฉันต้องการเปลี่ยนเพียงหนึ่งบรรทัดจากนั้นฉันต้องก้าวผ่านทรีเลิกทำทั้งหมดเพื่อค้นหาสถานะที่ฉันต้องการกลับไป มันจะดีกว่าถ้าฉันสามารถย้อนกลับเฉพาะภูมิภาคที่ทำเครื่องหมายไว้หรือเส้นที่เป็นจุด มีอะไรแบบนี้มีอยู่แล้ว?
16 editing  undo 

1
วิธีที่ดีที่สุด (กดแป้นน้อย) ในการกระโดดไปที่จุดเริ่มต้นของฟังก์ชั่นแล้วกลับไปที่จุดปัจจุบัน?
บางครั้งฉันอยู่ในฟังก์ชันยาวที่ไม่สามารถมองเห็นจุดเริ่มต้นของฟังก์ชันได้ ในขณะที่ฉันเพิ่งเรียนรู้เกี่ยวกับ(which-function-mode)สิ่งที่บอกฉันในชื่อโมเดลของฟังก์ชั่นฉันต้องการที่จะสามารถข้ามไปยังจุดเริ่มต้นของฟังก์ชั่นได้อย่างรวดเร็วและกลับมาได้อย่างง่ายดายที่สุด จนถึงตอนนี้ฉันได้พบคำตอบสองข้อ ใช้เครื่องหมาย C-SPC ทำเครื่องหมายจุดปัจจุบัน C-M-a เลื่อนไปข้างหลังเพื่อเริ่มฟังก์ชั่น C-x C-x เครื่องหมายแลกเปลี่ยนพร้อมจุดปัจจุบัน (ข้ามคุณกลับ) C-g ยกเลิกภูมิภาคที่ทำเครื่องหมายไว้ ใช้การลงทะเบียน C-x r SPC p บันทึกจุดปัจจุบันใน register 'p' C-M-a เลื่อนไปข้างหลังเพื่อเริ่มฟังก์ชั่น C-x r j p ข้ามไปยังจุดที่บันทึกไว้ใน register 'p' มีวิธีที่ดีกว่า? ฉันไม่ได้ต่อต้านการเพิ่ม elisp ลงใน.emacsไฟล์ของฉัน

2
ใช้ Org Babel เพื่อยุ่งเหยิงเป็นชื่อไฟล์ตัวแปร
หากฉันมีข้อมูลโค้ดที่ทำให้ยุ่งเหยิงกับไฟล์ แต่ฉันคาดว่าชื่อไฟล์จะเปลี่ยนแปลงตลอดเวลามีวิธีที่สะอาดกว่าในการเปลี่ยนชื่อไฟล์แทนที่จะเป็น Query-replace หรือไม่ ตัวอย่างเช่นสมมติว่าฉันยุ่งรหัสเพื่อ ~ / dir / my-file.el: #+BEGIN_SRC emacs-lisp :tangle ~/dir/my-file.el (setq myvar1 "value1") #+END_SRC #+BEGIN_SRC emacs-lisp :tangle ~/dir/my-file.el (defun foo (bar) ... ) #+END_SRC etc. ต่อมาฉันก็รู้ว่าไฟล์จะอยู่ในตำแหน่งที่ดีกว่า: #+BEGIN_SRC emacs-lisp :tangle ~/dir/my/file.el (setq myvar1 "value1") #+END_SRC #+BEGIN_SRC emacs-lisp :tangle ~/dir/my/file.el (defun foo (bar) ... ) #+END_SRC etc. มีวิธีในการเปลี่ยนอาร์กิวเมนต์เป็น: …

1
ฉันต้องการให้แท็ก <kbd> สำหรับบล็อกของฉันเขียนในโหมดองค์กร
ฉันเขียนและเผยแพร่บล็อกของฉันด้วยโหมดองค์กรและหน้าองค์กร สิ่งที่ฉันต้องการเขียนเกี่ยวกับ Emacs และฉันต้องการให้การกดแป้นถูกเน้นเป็น Stack Exchange ทำกับ&lt;kbd&gt;แท็ก ได้รับสิ่งนี้: C-x C-fแทนที่จะเป็นอย่างอื่น! ฉันจะทำสิ่งนี้ได้อย่างไร?
16 org-mode 

2
วิธีการตรวจสอบว่าภายในคู่จับคู่?
ถาม:มีวิธีทั่วไปในการตรวจสอบว่ามีจุดอยู่ภายในคู่อักขระที่ตรงกันหรือไม่ นั่นคือ: มีฟังก์ชันเพรดิเคตทั่วไป (หรือบางอย่าง) ที่สามารถตัดสินได้ว่าจุดนั้นอยู่ระหว่างคู่ที่จับคู่กันหรือตัวละครที่เลือกโดยพลการหรือไม่? ฉันกำลังคิดเกี่ยวกับสิ่งที่จะประเมินtในพูดสถานการณ์ต่อไปนี้โดย!อ้างถึงประเด็น: "!" (quotes in general) ``!'' (LaTeX quotes) $!$ (LaTeX math) (!) (lisp parens) *!* (org emphasis) แก้ไข : syntax-ppssดูเหมือนจะเป็นจุดเริ่มต้นที่ดี แต่ก็ยังไม่ชัดเจนสำหรับฉันว่าจะปรับให้เข้ากับคู่ที่จับคู่แบบหลายตัวละครได้อย่างไร (เช่น '`คำพูดของ LaTeX' หรือแม้กระทั่งจับคู่&lt;b&gt;html tags&lt;/b&gt;) ฉันสงสัยว่ามีวิธีแก้ปัญหาทั่วไปหรือไม่หรือต้องใช้เครื่องมือแยกวิเคราะห์
16 elisp  syntax 

3
กำหนดความกว้างคอลัมน์เป็น `ibuffer '
มีวิธีการกำหนดความกว้างของคอลัมน์ในibufferหรือไม่ โดยเฉพาะฉันต้องการขยายคอลัมน์ชื่อเพื่อให้สามารถอ่านชื่อบัฟเฟอร์ได้มากขึ้นก่อนที่จะถูกตัดทอน ฉันได้พยายามBuffer-menu-name-widthแต่มันดูเหมือนว่าตัวแปรที่ไม่ได้ใช้Buffer-menu ibufferฉันได้ลองแล้วM-x customize-group RET ibuffer RETแต่ดูเหมือนว่าจะไม่มีอะไรเกี่ยวข้อง

1
ฉันจะบล็อกเฟรมไม่ให้แตกได้อย่างไร
ขณะนี้ฉันทำงานกับทับทิมและ rspec ฉันชอบความคิดที่ว่ามีเฟรมแยกต่างหากในจอภาพอื่นที่แสดงบัฟเฟอร์การคอมไพล์ การตั้งค่าปัจจุบันของฉันใช้เฟรม 'code' (ซึ่งฉันทำงานจริง) และเฟรม 'test-result' (ซึ่งฉันเห็นผลลัพธ์ rspec) ปัญหาคือว่าเมื่อฉันพยายามที่จะเปิดบางรวบรวมข้อผิดพลาดหรือแฟ้มใน 'การทดสอบผล' กรอบแยกหน้าต่างในที่กรอบ สิ่งที่ฉันอยากทำคือเปิดให้อยู่ในกรอบ 'code' ของฉัน ฉันใช้ตัวเลือกdisplay-buffer-reuse-framesนี้แล้ว ฉันพยายามตั้งค่าหน้าต่างผลลัพธ์การคอมไพล์dedicatedด้วย แต่เมื่อใดก็ตามที่ emacs พยายามเปิดหน้าต่างใหม่เฟรมใหม่จะถูกสร้างขึ้น (ซึ่งน่ากลัวเป็นพิเศษหากคุณใช้ Helm) มีวิธีง่ายๆในการบรรลุเป้าหมายนี้หรือไม่?
16 window  frames 

1
สลับการวางแนวการแบ่งหน้าต่างวิธีที่เร็วที่สุด
สมมติว่าคุณเปิดบัฟเฟอร์สองอันเช่นนี้: ------------------------------------ | | buffer 1 | buffer 2 | | | ------------------------------------ เป็นวิธีที่เร็วที่สุดในการสลับบัฟเฟอร์เพื่อให้คุณได้รับสิ่งนี้: ------------------------------------ buffer 1 | | ------------------------------------ buffer 2 | | ------------------------------------
16 buffers  window 

1
ฉันจะวาด Unicode ด้วยโหมดศิลปินได้อย่างไร?
ฉันต้องการผลิตงานศิลปะ Unicode ด้วยโหมดศิลปิน แต่ปรากฏว่าโหมดศิลปินสนับสนุนเฉพาะศิลปะ ASCII เท่านั้น ฉันจะกำหนดค่าโหมดศิลปินเพื่อผลิตแทนได้อย่างไร +---------------+ | | | +-------+--+ | | | | | | | | | | | | +-------+-------+ | | | | | | | +----------+ นี้ ┌───────────────┐ │ │ │ ┌───────┼──┐ │ │ │ │ │ │ │ │ │ │ │ …
16 unicode 

2
ฉันจะตั้งค่า eshell ให้ใช้ ivy เพื่อให้แท็บสมบูรณ์ได้อย่างไร
ผมชอบมากivyสำหรับความสำเร็จและความรักที่เรียบง่าย(ivy-mode 1)พอที่จะได้รับivyเกือบทุกที่ที่ Emacs ใช้การเรียงลำดับของความสำเร็จบางคน (ที่ acomplished โดยเอาชนะcompleteing-readผมเชื่อว่า) แต่นี่ไม่ได้ตั้งค่าeshellเพื่อใช้ivyสำหรับการเติมแท็บให้สมบูรณ์ ฉันชอบeshellรายการผู้สมัครที่สำเร็จ แต่ต้องการให้ivyUI เลือกจากพวกเขา มีวิธีที่จะนำสิ่งที่eshellทำไปใช้เพื่อผลิตตัวเลือกที่สมบูรณ์และส่งมอบให้กับ 'ivy' หรือไม่?
16 eshell  ivy 

1
`setq-local 'ทำอะไรและฉันควรใช้เมื่อใด
ฉันไม่ชัดเจนเกี่ยวกับรูปแบบทั้งหมดของตัวแปรบัฟเฟอร์ภายในแม้ว่าหลังจากอ่านเอกสารทั้งหมดและการโพสต์มากมายที่นี่ใน SX นี่คือบทสรุปของความเข้าใจของฉัน: (defvar foo ..)ประกาศตัวแปรแบบไดนามิกสำหรับไฟล์ แต่ตัวแปรคือ (1) ไม่รู้จักไฟล์อื่นนอกจากว่าพวกเขาจะมีdefvar คำสั่งเช่นกันและ (2) ตัวแปรนั้นเป็นโกลบอลในขอบเขตไม่ใช่บัฟเฟอร์ในเครื่อง (make-variable-buffer-local foo)หลังจากที่defvarด้านบนบอกคอมไพเลอร์และทุกคนอื่นว่าตัวแปร foo นั้นจะได้รับการปฏิบัติเสมือนบัฟเฟอร์ในทุก ๆ ที่มันถูกตั้งค่าเมื่อมันถูกตั้งค่า ดังนั้นรูปแบบนี้เป็นรูปแบบที่ดีสำหรับการประกาศตัวแปรบัฟเฟอร์ในเครื่องโดยวางทั้งสองข้อความกลับไปด้านหลัง (defvar xxx ...) ;declare xxx with global scope (make-variable-buffer-local 'xxx) ;but now make it buffer-local everywhere เพื่อความสะดวก(defvar-local xxx ...)แบบฟอร์มสามารถใช้เป็นหนึ่งบรรทัดแทนที่สองบรรทัดด้านบน: (defvar-local xxx ...) ;make xxx buffer local everywhere เมื่อประกาศไว้ข้างต้นตัวแปร xxx สามารถใช้เหมือนกับตัวแปรอื่น ๆ …

2
Orgmode ส่งออก: วิธีป้องกันบรรทัดใหม่สำหรับบรรทัดข้อคิดเห็น
ขณะนี้ orgmode ของฉัน (v8.3.4) เมื่อส่งออกไปยัง LaTeX (และอาจเป็นรูปแบบอื่น ๆ แต่ฉันไม่ได้ตรวจสอบ) ให้สร้างบรรทัดใหม่สำหรับบรรทัดความคิดเห็นหรือบล็อกของบรรทัดความคิดเห็นต่อเนื่อง สิ่งนี้ไม่เป็นที่ต้องการเนื่องจากใน LaTeX นั้นจะสร้างย่อหน้าใหม่ เมื่อฉันเขียนฉันมักจะต้องแสดงความคิดเห็นหนึ่งหรือสองบรรทัดในช่วงกลางของวรรค แต่ไม่ต้องการที่จะแยกวรรคนั้นเป็นสอง ปัจจุบันเนื่องจากลักษณะการทำงานของ orgmode นี้ฉันต้องย้ายบรรทัดที่มีความคิดเห็นเหล่านั้นไปหลังย่อหน้าซึ่งอาจทำให้เกิดความสับสนเมื่อฉันแก้ไขข้อความ ด้านล่างเป็นตัวอย่างเล็กน้อย แหล่งที่มาของ orgmode คือ: First sentence. # Commented sentence. Last sentence. ซึ่งจะถูกส่งออกไปยัง LaTeX โดย orgmode เป็น (ละเว้นคำนำ): \begin{document} \tableofcontents First sentence. Last sentence. \end{document} มีบรรทัดว่างระหว่างประโยคแรกและประโยคสุดท้ายซึ่งส่งผลให้มีสองย่อหน้าแทนที่จะเป็นหนึ่งประโยค มีวิธีใดที่จะหยุดการทำงานของ orgmode นี้ได้หรือไม่? บรรทัดข้อคิดเห็นหรือบล็อกของบรรทัดข้อคิดเห็นควรถูกเอ็กซ์พอร์ตเป็น 0 ไบต์ / …


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