ถ้าฉันปิดบัฟเฟอร์รอยขีดข่วนใน Emac โดยไม่ตั้งใจฉันจะสร้างบัฟเฟอร์รอยขีดข่วนใหม่ได้อย่างไร
ถ้าฉันปิดบัฟเฟอร์รอยขีดข่วนใน Emac โดยไม่ตั้งใจฉันจะสร้างบัฟเฟอร์รอยขีดข่วนใหม่ได้อย่างไร
คำตอบ:
C-x b *scratch* RET
เพียงแค่สร้างใหม่อีกครั้งบัฟเฟอร์โดยสลับไปที่มัน ตั้งแต่ Emacs 21.2 ถ้าคุณสร้างบัฟเฟอร์ที่เรียกว่า*scratch*
ก็ใส่โดยอัตโนมัติในโหมดการโต้ตอบเสียงกระเพื่อม
*scratch*
แล้วสลับกลับไปที่เดิมมันถูกตั้งค่าเป็นโหมดเสียงกระเพื่อมโดยอัตโนมัติ
.emacs
)
มันจะเป็นการดีกว่าที่จะสร้าง*scratch*
บัฟเฟอร์ขึ้นใหม่โดยอัตโนมัติเมื่อใดก็ตามที่มันถูกลบและหลีกเลี่ยงการพิมพ์ชื่อซ้ำ
(defun prepare-scratch-for-kill ()
(save-excursion
(set-buffer (get-buffer-create "*scratch*"))
(add-hook 'kill-buffer-query-functions 'kill-scratch-buffer t)))
(defun kill-scratch-buffer ()
(let (kill-buffer-query-functions)
(kill-buffer (current-buffer)))
;; no way, *scratch* shall live
(prepare-scratch-for-kill)
;; Since we "killed" it, don't let caller try too
nil)
(prepare-scratch-for-kill)
GNU Emacs การผูกค่าเริ่มต้น:
C-xb*scratch*
หรือมากขึ้น verbosely
switch-to-buffer
*scratch*
*scratch*
บัฟเฟอร์บัฟเฟอร์ที่เลือกเมื่อเริ่มต้นและมีความสำคัญโหมดเสียงกระเพื่อมปฏิสัมพันธ์ หมายเหตุ: โหมดสำหรับบัฟเฟอร์จะถูกควบคุมโดยตัวแปร*scratch*
initial-major-mode
โดยทั่วไปคุณสามารถสร้างบัฟเฟอร์ "เริ่มต้น" ได้มากเท่าที่คุณต้องการและตั้งชื่อตามที่คุณต้องการ
C-x bNAME
เปลี่ยนเป็นบัฟเฟอร์NAME
สร้างมันหากไม่มีอยู่ บัฟเฟอร์ใหม่ไม่เกี่ยวข้องกับไฟล์บนดิสก์จนกว่าคุณจะใช้C-xC-w(หรือM-xwrite-file
) เพื่อเลือกไฟล์ที่ควรบันทึก
M-xtext-mode
เปลี่ยนโหมดหลักของบัฟเฟอร์ปัจจุบันเป็นโหมดข้อความ
ในการค้นหาโหมดทั้งหมดที่มี (นั่นคือโดยไม่ต้องมีแพ็คเกจใหม่) คุณสามารถรับรายการโดยพิมพ์:
apropos-command
-mode$
ฉันชอบที่จะใช้บัฟเฟอร์รอยขีดข่วนสำหรับสิ่งที่ทิ้ง แม้ว่าจะมีเพียงคนเดียวที่ค่อนข้าง จำกัด ดังนั้นฉันจึงมีscratch
คำสั่งแบบโต้ตอบสำหรับการเปิดบัฟเฟอร์รอยขีดข่วนใหม่ (ไม่ว่าจะมีอยู่กี่ตัวก็ตาม):
(defun scratch ()
"create a new scratch buffer to work in. (could be *scratch* - *scratchX*)"
(interactive)
(let ((n 0)
bufname)
(while (progn
(setq bufname (concat "*scratch"
(if (= n 0) "" (int-to-string n))
"*"))
(setq n (1+ n))
(get-buffer bufname)))
(switch-to-buffer (get-buffer-create bufname))
(if (= n 1) initial-major-mode))) ; 1, because n was incremented
นำมาใช้จาก: http://everything2.com/index.pl?node_id=1038451
M-x recover-session
ไม่กู้คืนสิ่งเหล่านั้น มีใครแก้ไขสิ่งนี้เพื่อใช้สิ่งที่ชอบmake-temp-file
?
ฉันขอแนะนำให้สร้างบัฟเฟอร์เปล่าได้ไหม สิ่งที่น่าสนใจคือคุณสร้างบัฟเฟอร์ขึ้นมาก่อนแล้วค่อยบันทึกหลังจากนั้นถ้าคุณต้องการ
(defun my-empty-buffer ()
"Open a new empty buffer."
(interactive)
(let ((buf (generate-new-buffer "untitled")))
(switch-to-buffer buf)
(funcall (and initial-major-mode))
(setq buffer-offer-save t)))
คุณจะต้องตั้งค่า initial-major-mode เป็น lisp ในไฟล์ init ของคุณและคุณควรผูก my-empty-buffer เป็นทางลัดเช่น C-n
คุณและคุณควรผูกว่างบัฟเฟอร์ของฉันไปทางลัดเช่น
ความอนุเคราะห์จากergoemacs