Emacs

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

1
วิธีการตัดแถบตกแต่ง (คุณสมบัติข้อความ) จากสตริง?
โดย "สตริงตกแต่ง" ฉันหมายถึงสิ่งที่ชอบ #("foo" 0 4 (fontified t face font-lock-function-name-face)) ... ตรงข้ามกับ "สตริงธรรมดา" "foo" (หากรหัส Elisp อ่านสตริงโดยตรงจากบัฟเฟอร์มันอาจถูกตกแต่งเช่นนี้) วิธีที่ง่ายที่สุดในการแปลงสตริงที่ตกแต่งเป็นสตริงธรรมดา (โดยการปอกการตกแต่งทั้งหมด) คืออะไร?

2
set-mark-command (C-SPC) ไม่รู้จัก / หัก
ฉันต้องการทราบวิธีเริ่มต้นการแก้ไขปัญหาต่อไปนี้: C-SPCไม่ได้ทำอะไร มันไม่ได้ปรากฏตัวในมินิ buffer เมื่อฉันพิมพ์มัน แต่เมื่อฉันมองไปที่มันแสดงเป็นผูกไว้กับM-x set-mark-commandC-SPC สภาพแวดล้อม ฉันติดตั้ง GNU Emacs (24.5.1) ผ่าน Homebrew และฉัน.emacs.dใช้Clojure สำหรับ Brave และ Trueด้วยแพ็คเกจเพิ่มเติม ขั้นตอนต่าง ๆ ที่ผ่านมา ฉันพยายามลบและติดตั้งใหม่โดยไม่ส่งผลกระทบใด ๆ ก่อนดังนั้นฉันสามารถทำขั้นตอนใดบ้างเพื่อระบุจุดที่เกิดขึ้น ข้อมูลเพิ่มเติม รายการแพ็คเกจทั้งหมดที่ติดตั้งอยู่ในภาพหน้าจอด้านล่าง:
17 osx 

1
หมายเลขแถวของตารางโหมดองค์กรจะเติบโตโดยอัตโนมัติหรือไม่
เมื่อเร็ว ๆ นี้ฉันกำลังใช้ตารางเพื่อทำสถิติบางอย่างและฉันต้องการคอลัมน์แรกของตารางเพื่อระบุหมายเลขแถวเช่นนี้ | | title| |--| -----| | 1| A | | 2| B | และฉันต้องการให้จำนวนคอลัมน์แรกโตขึ้นโดยอัตโนมัติหลังจากสร้างแถวใหม่ มีคำแนะนำที่ดีเกี่ยวกับเรื่องนี้หรือไม่?
17 org-mode 

2
จะใช้ตัวแปรทั้งสองใน Ediff อย่างไร
Ediff อินเตอร์เฟสมี+ปุ่ม แต่ดูเหมือนจะไม่ทำอะไรเลย (minibuffer แสดงให้เห็นว่า "ไม่มี" เมื่อฉันกดมัน) ฉันคิดว่าปุ่มนี้มีความหมายสำหรับการใช้ตัวแปรทั้งสองในบัฟเฟอร์ผลลัพธ์ อย่างไรก็ตามคำถามเดิมคือฉันจะทำให้ Ediff แก้ไขข้อขัดแย้งผสานได้อย่างไรโดยการใส่เนื้อหาจากทั้งบัฟเฟอร์ A และ B ลงในบัฟเฟอร์ C (ฉันรู้ว่าฉันสามารถแก้ไข C ได้ แต่หวังว่าจะทำได้ง่ายขึ้น) สมมติว่าไฟล์Aคือ: บรรทัดเดียวกัน เส้นต่าง ๆ บรรทัดเดียวกัน ในขณะที่ไฟล์Bคือ: บรรทัดเดียวกัน สายอื่น บรรทัดเดียวกัน ฉันต้องการไฟล์Cซึ่งเป็นผลมาจากการรวมAกับBให้เป็นดังนี้: บรรทัดเดียวกัน เส้นต่าง ๆ สายอื่น บรรทัดเดียวกัน
17 ediff 

1
วิธีสร้างบล็อกความคิดเห็น C เรียบร้อยโดยอัตโนมัติในขณะพิมพ์?
เครื่องมือแก้ไขโค้ดบางตัวเช่น eclipse จะสร้างบล็อกที่เรียบร้อยโดยอัตโนมัติเมื่อคุณเริ่มพิมพ์ความคิดเห็นแบบหลายบรรทัด: มีแพ็กเกจหรือวิธีอื่นใน emacs ด้วยหรือไม่ แก้ไข:เพื่อชี้แจง: ฉันไม่ต้องการชุดคีย์ที่แทรกบล็อกความคิดเห็น ฉันต้องการแสดงความคิดเห็นบล็อกจะถูกสร้างขึ้นโดยอัตโนมัติเมื่อกดหลังRET/*

2
ฆ่าบัฟเฟอร์กระบวนการโดยไม่มีการยืนยัน?
ฉันได้ผูกไว้กับC-x C-k kill-this-bufferแต่เมื่อฉันเข้าไปในบัฟเฟอร์ที่ใช้กระบวนการเช่น Python หรือ MySQL ถ้าฉันC-x C-kถาม บัฟเฟอร์ "* Python *" มีกระบวนการทำงานอยู่ ฆ่ามัน (y หรือ n)? ฉันจะฆ่าบัฟเฟอร์กระบวนการโดยไม่มีการยืนยันได้อย่างไร

2
วิธีพิมพ์รหัสผ่านของไฟล์. gpg เฉพาะเมื่อเปิด
(ฉันเข้าใจความหมายของความปลอดภัยต่อไปนี้และฉันไม่เป็นไร) ฉันมีไฟล์เข้ารหัสหนึ่งไฟล์ในไดเรกทอรีองค์กรของฉัน, diary.org.gpg. ฉันไม่เคยกำหนดค่าพิเศษใด ๆ เพื่อให้ใช้งานได้ เมื่อใดก็ตามที่ฉันเข้าชมไฟล์ฉันจะขอรหัสผ่านการเข้ารหัส อันไหนดี เมื่อใดก็ตามที่ฉันบันทึกบัฟเฟอร์ฉันจะขอรหัสผ่านอีกครั้งสองครั้ง ซึ่งเป็นปัญหาของฉัน โปรดทราบว่าฉันไม่ได้กำหนดค่าใด ๆ เพื่อให้ใช้งานได้ดังนั้นคำตอบใด ๆ เกี่ยวกับตัวแทนหรือการป้อนรหัสจะต้องมาพร้อมกับคำแนะนำการกำหนดค่า ฉันคิดว่าจะเก็บรหัสผ่านไว้ที่ใดที่หนึ่งในไฟล์ (ที่ส่วนหัวหรือท้ายสุดของไฟล์) จากนั้นเมื่อใดก็ตามที่ฉันบันทึกไว้ Emacs สามารถอ่านรหัสผ่านในบัฟเฟอร์และใช้สิ่งนั้นได้ epa.elแต่เมื่อผมเริ่มมองนี้ผมได้ภายในที่ไหนสักแห่งที่หายไปอย่างสมบูรณ์ ถาม:ฉันจะส่งรหัสผ่านโดยตรงจาก Emacs ไปยังระบบ / กระบวนการเข้ารหัสได้อย่างไรเมื่อบันทึกบัฟเฟอร์แทนที่จะได้รับพร้อมท์ ส่วนที่เหลือทั้งหมด (ค้นหารหัสผ่านในบัฟเฟอร์) ฉันสามารถคิดออกเอง ฉันหลงทางเมื่อพยายามทำความเข้าใจว่า Emacs เชื่อมต่อกับ gpg อย่างไร โปรดทราบว่าฉันใช้ Ubuntu, Arch Linux และ Windows นี่คือเหตุผลว่าทำไมความคิดแรกของฉันจึงเป็นวิธีแก้ปัญหา emacs-centric ฉันสามารถใช้งานโซลูชันที่ไม่ทำงานบน Windows ได้ตราบใดที่ฉันยังสามารถเข้าถึงไฟล์ในแบบแมนนวลได้
17 encryption  epa  gpg 

2
การเชื่อมต่อ TLS นั้นสิ้นสุดลงอย่างไม่ถูกต้อง
เมื่อทำงานpackage-list-packagesฉันได้รับข้อผิดพลาดดังต่อไปนี้: Failed to download `gnu' archive. gnutls.c: [0] (Emacs) fatal error: The TLS connection was non-properly terminated. ฉันใช้ Emacs 24.4 บน Windows จนกระทั่งการดาวน์โหลดแพ็คเกจสัปดาห์นี้เกิดขึ้นตามปกติ ฉันได้ลองคู่มือนี้ในการตั้งค่า Emacs-GnuTLS-Windows ฉันพยายามเรียกใช้รหัสนี้จากส่วนดูว่าทำงานหรือไม่ : (condition-case e (delete-process (gnutls-negotiate :process (open-network-stream "test" nil "www.google.com" 443) :hostname "www.google.com" :verify-error t)) (error e)) ฉันได้รับการnilแทรกลงในบัฟเฟอร์โดยไม่มีข้อผิดพลาดในการตรวจสอบซึ่งตามบทความเป็นสัญญาณของความสำเร็จ อย่างไรก็ตามหากฉันตั้งค่า(setq gnutls-log-level 2)และเรียกใช้รหัสอีกครั้งฉันจะได้ผลลัพธ์ต่อไปนี้ gnutls.c: [1] (Emacs) …

5
แผนที่ฟังก์ชั่นในรายการทรัพย์สินหรือไม่
ถาม:วิธีการแมปฟังก์ชันใดในรายการคุณสมบัติคืออะไร ฟังก์ชั่นการทำแผนที่ต่างๆ ( mapcarและครอบครัว) แมปฟังก์ชั่นมากกว่าลำดับเช่นรายการ เราจะใช้ฟังก์ชั่นเหล่านี้เมื่อจัดการกับรายการคุณสมบัติได้อย่างไรเช่นเมื่อพยายามแมปกับคุณสมบัติแต่ละรายการที่มีอยู่ในรายการ (ซึ่งจะเป็นองค์ประกอบอื่น ๆ ที่เริ่มต้นจากองค์ประกอบแรก) สำหรับผมแล้วดูเหมือนว่าฟังก์ชั่นการแมปจะต้องเข้าถึงรายการในคู่ขององค์ประกอบมากกว่าเป็นองค์ประกอบของแต่ละบุคคล ในฐานะที่เป็นตัวอย่างของเล่นคนหนึ่งจะใช้รายการทรัพย์สินและรวบรวมค่าคุณสมบัติทั้งหมดได้อย่างไร ถ้ามันเป็นรายการเชื่อมโยงแทนมันจะค่อนข้างง่าย: (mapcar #'cadr '((:prop1 a) (:prop2 b) (:prop3 c))) ;=> (a b c) ฉันแน่ใจว่าสิ่งนี้สามารถทำได้ด้วยการวนรอบ แต่ดูเหมือนว่าจะลำบากเล็กน้อยและฉันสงสัยว่ามีวิธีใช้สำนวนมากกว่านี้หรือไม่
17 elisp  mapping 

1
วิธีเข้าถึงสวิตช์คำสั่งใน Magit
magitคำสั่งส่วนใหญ่จะเรียกใช้ด้วยปุ่มเดียวซึ่งจะปรากฏขึ้นเมนูคำสั่งย่อยและสวิทช์ ตัวอย่างเช่นPแสดงPและtเป็นคำสั่งย่อยและ-fและ-uเป็น "สวิตช์" การกดปุ่มตัวอักษรสำหรับคำสั่งย่อยจะเรียกใช้งาน แต่จะเรียกสวิตช์อย่างไร? ฉันมีที่เก็บพร้อมรีโมตสองตัวและฉันต้องการผลักดันไปยังรีโมตอื่น -uสวิทช์ลักษณะเช่นเดียวกับสิ่งที่ แต่ถ้าฉันพิมพ์P -uที่-uเปลี่ยนเป็นสีแดง แต่ Magit ไม่พร้อมในการระยะไกล คู่มือบอกว่าไม่มีอะไรเกี่ยวกับสวิตช์เหล่านี้สำหรับคำสั่งใด ๆ เท่าที่ฉันสามารถบอกได้ ใครช่วยอธิบายวิธีการใช้สวิตช์เหล่านี้โดยทั่วไป ฉันไม่เพียง แต่เกี่ยวข้องกับสวิตช์นี้เท่านั้น แต่ยังรวมถึงอุปกรณ์ทั่วไปด้วย
17 magit 

1
การประเมินผลขัดจังหวะและสังเกตสแต็กปัจจุบันใน emacs-lisp debugger?
หากฟังก์ชั่น emacs-lisp เช่น hook ของโหมดหลักใช้เวลานานกว่าที่คาดไว้ในการเรียกใช้งานบางครั้งฉันต้องการขัดจังหวะและดูที่สแต็กปัจจุบัน โดยหลักการแล้วฉันต้องการดูค่าตัวแปรและอื่น ๆ ในโปรแกรมดีบั๊ก ฉันไม่ได้พูดเกี่ยวกับรหัสที่ฉันจงใจเรียกใช้งานในโหมด emacs-lisp แต่เป็นรหัสที่เรียกใช้ในการทำงานปกติของ emacs ฉันจะขัดจังหวะการเรียกใช้โค้ด emacs-lisp โดยตรงใน emacs ได้อย่างไร ฉันไม่ทราบล่วงหน้าว่าฟังก์ชั่นใดที่ฉันต้องแก้ไข ตัวอย่างเช่นการพิมพ์C-gในขณะที่มันขัดจังหวะการทำงานก็ไม่ได้บอกฉันว่าฟังก์ชั่นใดถูกขัดจังหวะ
17 elisp  debugging 

5
หยุดที่จุดเริ่มต้นของคำว่า "ไปข้างหน้าคำ"
ฉันมักจะใช้การเรียกหลายครั้งforward-wordตามด้วยซิงเกิ้ลbackward-wordเพื่อย้ายจุดไปยังจุดเริ่มต้นของคำในบรรทัด ฉันเดาว่าฉันไม่เคยชินกับวิธีที่forward-wordแตกต่างจากเสียงเรียกเข้าwและแม้กระทั่งหลังจากใช้ Emacs มาหลายปีฉันก็ไม่ชินกับความแตกต่าง มีฟังก์ชั่นที่ฉันสามารถใช้แทนforward-wordสิ่งที่ไม่ข้ามคำ แต่หยุดที่จุดเริ่มต้นของคำด้วยหรือไม่ มีกลยุทธ์อื่น ๆ ที่จะย้ายไปจุดเริ่มต้นของคำเมื่อจุดก้าวไปข้างหน้าที่ไม่เกี่ยวข้องกับการดำเนินการซ้ำแล้วซ้ำอีกforward-char?
17 motion 

2
การแทนที่ flet บน emacsen ใหม่ที่ถูกต้องคืออะไร
ฉันมีรหัสที่ใช้fletในการเปลี่ยนพฤติกรรมของฟังก์ชั่นชั่วคราว ;; prevent changing the window (flet ((pop-to-buffer (buffer &rest args) (switch-to-buffer buffer))) (compilation-next-error-function n reset)) อย่างไรก็ตามคอมไพเลอร์ไบต์ของ Emacs ให้คำเตือน: In ag/next-error-function: ag.el:103:7:Warning: `flet' is an obsolete macro (as of 24.3); use either `cl-flet' or `cl-letf'. อย่างไรก็ตามcl-fletทำงานแตกต่างกันและไม่เหมาะกับกรณีการใช้งานบางอย่างและฉันเชื่อว่านี่เป็นหนึ่งในกรณีเหล่านั้น ตัวเลือกที่ฉันเห็นคือ: บอกให้ Emacs เพิกเฉยต่อคำเตือนอย่างใด fletม้วนของตัวเอง ใช้nofletหรือdflet วิธีที่ดีที่สุดคืออะไร?
17 cl-lib 

3
การล่าช้าในการกำหนดรายการที่กำหนดเวลาไว้ไม่ให้แสดงในวาระโหมดองค์กรคืออะไร
หนึ่งอาจตั้งorg-deadline-warning-daysให้มีDEADLINEรายการแสดงจำนวนวันเริ่มต้นก่อนกำหนดเวลาในระเบียบวาระการประชุมหรืออาจทำรายการเป็นกรณี ๆ ไปโดยการเพิ่มเช่น-3dการDEADLINEประทับเวลา ทีนี้การใช้เครื่องหมายเตือนแบบเดียวกัน-3dกับSCHEDULEDรายการจะให้เอฟเฟกต์ย้อนกลับ: จะไม่มีการเพิ่มรายการ แต่ข้ามไปจากมุมมองกำหนดการสำหรับจำนวนวันนั้น จากคู่มือโหมด Org: If you want to _delay_ the display of this task in the agenda, use `SCHEDULED: <2004-12-25 Sat -2d>': the task is still scheduled on the 25th but will appear two days later. In case the task contains a repeater, the delay is …

2
ฉันจะเลิกพฤติกรรมใน Evil ได้อย่างไรเหมือนกับ Vim
พฤติกรรมการเลิกทำที่เป็นค่าเริ่มต้นใน Evil นั้นหยาบเกินไปเพราะจะพิจารณาสิ่งใด ๆ ที่เกิดขึ้นระหว่างการเข้าสู่โหมดแทรกและปล่อยให้มันเป็นการดำเนินการแก้ไขเดียว เมื่อคุณป้อนทั้งย่อหน้าของข้อความในระหว่างการแทรกหนึ่งครั้งจากนั้นดำเนินการเลิกทำทั้งย่อหน้าจะถูกลบออก ในทางตรงกันข้าม Vim จะเริ่มการเลิกทำหน่วยใหม่เมื่อใดก็ตามที่คุณเลื่อนเคอร์เซอร์ในโหมดแทรกโดยใช้วิธีอื่นนอกเหนือจากการป้อนข้อความ Evil มีตัวแปรการปรับแต่งที่สามารถใช้เพื่อรับประวัติเลิกทำที่ละเอียดยิ่งขึ้น: (setq evil-want-fine-undo t) ด้วยการตั้งค่านี้ Evil จะเริ่มการเลิกทำหน่วยใหม่เมื่อเคอร์เซอร์ถูกย้ายในโหมดแทรกเช่นเดียวกับ Vim อย่างไรก็ตามการตั้งค่านี้ยังยุ่งกับวิธีการจัดการการแทนที่: หากคุณแทนที่คำที่ใช้cwคุณต้องเลิกทำสองครั้งเพื่อคืนค่าคำเดิม: หนึ่งครั้งสำหรับการลบคำใหม่และอีกครั้งสำหรับการแทรกคำเดิม สิ่งนี้ไม่สอดคล้องกับ Vim และไม่สมเหตุสมผลเนื่องจากการแทนที่ควรเป็นแบบอะตอมมิก คำถาม: ฉันจะกำหนดค่า Evil และ undo-tree ได้อย่างไรเพื่อรับพฤติกรรมการยกเลิกของ Vim

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