จัดระเบียบเนื้อหาของ ~ / .emacs.d / init.el และ ~ / emacs.d หรือไม่


28
  1. เมื่อเราเพิ่มบรรทัดมากขึ้นเรื่อย~/.emacs.d/init.elๆ เพื่อวัตถุประสงค์ต่าง ๆ (สำหรับ python-mode, สำหรับ emacs-eclim, สำหรับ ... ) ไฟล์จะยาวและอ่านได้น้อยลง มีวิธีในการช่วยจัดระเบียบเนื้อหาหรือไม่
  2. ปัจจุบันของฉัน~/.emacs.dดูเหมือนว่านี้

    $ ls *
    init.el
    
    auto-save-list:
    
    elisp:
    python-mode.el-6.1.3
    
    elpa:
    archives        auctex-readme.txt         s-20140910.334
    auctex-11.87.7  emacs-eclim-20140809.207
    
    eshell:
    history
    

    python-mode.el-6.1.3ได้รับการติดตั้งด้วยตนเองในขณะที่ emacs-eclim-20140809.207ถูกติดตั้งด้วยelpaและผมไม่แน่ใจ 100% ว่าสิ่งอื่น ๆ ที่อยู่ภายใต้ได้โดยelpa/ elpaฉันจะจัดระเบียบเนื้อหาของได้~/.emacs.d/อย่างไร

คำตอบ:


32

ผู้ที่ใช้โปรแกรมแก้ไขน้อยกว่าต้องการแบ่งรหัสออกเป็นหลายไฟล์ หากคุณใช้ Emacs ไม่มีเหตุผลที่จะทำเช่นนั้น: ใช้ไฟล์ขนาดใหญ่ไฟล์เดียวซึ่งคุณแบ่งเป็นส่วน ๆ

แต่ละส่วนควรเริ่มต้นด้วย

^L
;;; title of the section

ที่คุณใส่ตัวละครโดยการพิมพ์^L C-q C-lจากนั้นคุณสามารถใช้คำสั่งเช่นC-x ]( forward-page) หรือC-x n p( narrow-to-page) เพื่อเลื่อนดูไฟล์ ดูเพิ่มเติมที่หัวข้อ 25.4 (หน้า)ของคู่มือ Emacs


16
นอกจากนี้ยังไม่มีเหตุผลพิเศษที่จะไม่แยกรหัสเป็นหลายไฟล์ ขึ้นอยู่กับสิ่งที่คุณต้องการให้การจัดกลุ่มของเนื้อหาต่าง ๆ ร่วมกันมีความหมาย - คุณต้องการให้มันทำงานอย่างไร และมันสามารถขึ้นอยู่กับขนาดใหญ่ และขึ้นอยู่กับว่าชิ้นส่วนของรหัสของคุณแชร์กับผู้อื่นเช่นห้องสมุดเป็นต้น
ดึง

2
การดึงความคิดเห็นของ @ Drew ผู้ใช้อาจต้องการกำหนดค่าที่แตกต่างกันสำหรับเวอร์ชั่นและสภาพแวดล้อม emacs ที่แตกต่างกันและโหลด elisp ที่เกี่ยวข้องตามลำดับ ที่กล่าวว่าฉันชอบเคล็ดลับเลขหน้า
ฮาร์วีย์

3
@Harvey: การแบ่งหน้าและใช้ไฟล์แยกเป็นวิธีที่เป็นอิสระในการจัดระเบียบข้อความ คุณสามารถใช้ทั้งสองอย่างชัดเจน ฉันใช้เลขหน้าในห้องสมุดของฉันทั้งหมดเพื่อแยกส่วน แต่ฉันก็มีห้องสมุดแยกต่างหาก (ไฟล์)
ดึง

1
@jch หากคุณใช้สไตล์นี้คุณอาจต้องการเปิดใช้งานโหมดผู้เยาว์หรือคุณลักษณะที่คล้ายกันเพื่อให้สามารถพับส่วนและฟังก์ชั่นได้ การพับหัวระดับบนสุดทั้งหมดให้ภาพรวมที่ดีของทุกส่วนในการกำหนดค่า Emacs ของคุณ
Lunaryorn

@ Lunaryorn ฉันได้ลองแล้ว แต่ฉันพบว่ามันเบี่ยงเบนความสนใจ - ฉันพบว่าการเคลื่อนไหวของหน้าเว็บสั่งให้เพียงพอตลอดเวลา บางทีของฉัน.emacsและ.wlไม่นานพอ
jch

20

วิธีคลาสสิกในการทำเช่นนี้คือการ.emacsแยกไฟล์ของคุณออกเป็นไฟล์แยก ตัวอย่างเช่นคุณสามารถย้ายเนื้อหาเว็บทั้งหมดของคุณลงใน~/.emacs.d/web-config.elแล้วโหลดภายในinit.el:

(load "~/.emacs.d/web-config.el")

หากคุณต้องการ~/.emacs.dจัดระเบียบให้มากขึ้นคุณสามารถเปลี่ยนไฟล์ปรับแต่งเหล่านี้ไปไว้ในไดเรกทอรีของตัวเองได้:

(load "~/.emacs.d/config/web.el")

ตอนนี้คุณสามารถข้ามไปยังไฟล์ที่เหมาะสมเมื่อทำการเปลี่ยนแปลงการกำหนดค่าของคุณ

สิ่งหนึ่งที่ขาดหายไปคือตัวแปรที่ตั้งค่าผ่านระบบปรับแต่ง สิ่งเหล่านี้จะยังคงอยู่ใน init.el หลักของคุณ เห็นได้ชัดว่ามียูทิลิตี้เล็กน้อยที่เรียกว่าinit splitซึ่งให้คุณสร้างกฎเกี่ยวกับการตั้งค่าที่กำหนดเองได้ แต่ฉันไม่เคยใช้มันเลย หรือมิฉะนั้นระบบ“ ปรับแต่ง” สามารถกำหนดค่าให้ใช้ไฟล์แยกต่างหากสำหรับการแก้ไขการตั้งค่าของคุณ ตั้งค่าcustom-fileตัวแปรที่จะระบุตำแหน่งที่การตั้งค่า“ปรับแต่ง” ควรจะอ่านและเขียนไปยัง

เท่าที่ไดเรคทอรีนั้นใช้ไปฉันก็มีความสุขกับเลย์เอาต์เริ่มต้นเสมอ การเปลี่ยนแปลงหลักที่ผมทำถูกสร้างไดเรกทอรีสำหรับทุกแพคเกจที่กำหนดเองของตัวเองและห้องสมุดที่ไม่ได้package.elรับการจัดการโดย สิ่งนี้ให้บ้านเดี่ยวกับ elisp ที่ฉันกำหนดเองซึ่งไม่เกี่ยวข้องกับการกำหนดค่า


ขอบคุณ (1) ไดเร็กทอรีสำหรับแพ็กเกจและไลบรารีที่จัดการโดย package.el คืออะไร (2) เนื้อหาของ dir elpaจัดการโดยelpaหรือไม่ ฉันสามารถย้ายพวกมันไปที่อื่นได้ไหม?
ทิม

2
คุณสามารถระบุไฟล์แยกต่างหากสำหรับปรับแต่งตัวแปรโดยการตั้งค่าcustom-fileตัวแปร ที่มา
Kaushal Modi

@Tim: ไดเรกทอรีที่จัดการโดย package.el คือ elpa Elpa ไม่ใช่แพ็คเกจเสียงกระเพื่อม แต่เป็นที่เก็บของแพ็คเกจ Package.el จะยังคงเพิ่มแพ็คเกจทั้งหมดที่ติดตั้ง (ไม่ว่าจะเป็นจาก elpa หรือจากพื้นที่เก็บข้อมูลอื่น - ตัวอย่างเช่นในกรณีของคุณฉันไม่คิดว่า eclim และ s มาจาก elpa) ในไดเรกทอรี elpa และใช่คุณไม่จำเป็นต้องกังวลเกี่ยวกับเนื้อหาของไดเรกทอรีนี้
T. Verron

(ไม่สามารถแก้ไขได้อีกต่อไป) สิ่งที่ฉันเขียนด้านบนไม่เป็นความจริงอย่างจริงจัง: elpa เป็นรูปแบบของแพคเกจการจัดเก็บถาวร package.el เป็นผู้จัดการแพคเกจ สำหรับผู้ใช้ไม่มีความแตกต่างที่แท้จริงระหว่างสอง ความคิดเห็นของฉันข้างต้นผิดพลาด elpa กับ GNU elpa ซึ่งเป็นหนึ่งในแพคเกจ elpa ที่มีอยู่ (และเป็นทางการเดียวเท่านั้น)
T. Verron

16

หากคุณชอบ Org-mode คุณสามารถใช้มันเพื่อจัดระเบียบของคุณ.emacsโดยไม่แยกออกมา ภายใต้การกำหนดค่าปัจจุบันของฉัน.emacsไฟล์ของฉันเพิ่งบู๊ตไฟล์ init.org ที่ฉันมีอยู่~/.emacs.d/init/init.org

(require 'org)

;; Load the actual configuration file
(org-babel-load-file
  (expand-file-name (concat user-emacs-directory "init/init.org")))

ด้วยการใช้ไฟล์ที่แตกต่างกันคุณต้องgrepแทนที่จะC-sค้นหาสิ่งง่าย ๆและอื่น ๆ นอกจากนี้ยังง่ายต่อการเพิ่มหลายระดับให้กับองค์กรของคุณ


1
org-babel-load-fileฉันอยู่ในขั้นตอนของการทำเช่นนี้แม้ว่าผมไม่ได้คิดว่าจะใช้ หวาน! (ตัวอย่าง: github.com/vermiculus/dotfiles/blob/… , github.com/larstvei/dot-emacs )
Sean Allred

ข้อมูลเพิ่มเติมเกี่ยวกับการใช้โหมด org สำหรับ Emacs config กับคำถามนี้: ฉันสามารถใช้โหมด org เพื่อจัดโครงสร้าง. emacs หรือไฟล์การกำหนดค่า. el อื่น ๆ ของฉันได้หรือไม่
ShreevatsaR

9

เพียงแค่ย้ายชิ้นส่วนของรหัสจากinit.elการแยกไฟล์ (ห้องสมุด) requireซึ่งคุณแล้ว (ใช้provideในไลบรารีเป็นrequired.) วางไฟล์เหล่านั้นทุกที่ที่คุณต้องการและอัพเดตload-pathตามนั้น


ขอบคุณ (1) ตัวอย่างเช่น (2) คุณแนะนำอะไรให้จัดระเบียบ ~ / .emacs.d /?
ทิม

1
คุณหมายถึงอะไรโดย "จัดระเบียบเนื้อหาของ~/.emacs.d/" คุณไม่ได้ระบุคุณสมบัติที่คุณต้องการคุณไม่ได้ จำกัด อยู่ที่การมีทุกสิ่งในไดเรกทอรีเดียวคุณสามารถใส่สิ่งต่าง ๆ ได้ทุกที่ที่คุณต้องการและแก้ไขload-pathตามนั้น สิ่งต่าง ๆ ใน~/.emacs.d/(เช่นถ้าคุณไม่สามารถบอกได้ว่าจะวางสิ่งใด) จากนั้นย้ายไปยังตำแหน่งที่คุณต้องการหลังจากโปรแกรม / เครื่องมือนั้นเสร็จสิ้น
Drew

1
ตัวอย่างเช่นคุณหมายถึงอะไร อะไรคือสิ่งที่คุณต้องการตัวอย่าง เป็นตัวอย่างของการใช้(require 'foobar) เป็นตัวอย่างของการปรับเปลี่ยน เป็นตัวอย่างของการใช้ require(add-to-list 'load-path "/my/lisp/dir")load-path(provide 'foobar)provide
ดึง

โดย "จัดระเบียบเนื้อหาของ ~ / .emacs.d /, ฉันในฐานะมนุษย์สามารถเข้าใจได้ดีขึ้นไม่ใช่เพื่อให้ emacs เข้าใจมันเป็นนิสัยเหมือนจัดตู้ลิ้นชักลิ้นชักชั้นหนังสือของคุณตัวอย่างเช่นหลาม -mode.el-6.1.3 ถูกติดตั้งด้วยตนเองในขณะที่ emacs-eclim-20140809.207 ถูกติดตั้งโดย elpa พวกเขาทั้งสองแพคเกจหรือไม่ถ้าพวกเขาเป็นมันเป็นความคิดที่ดีที่จะวางไว้ในไดเรกทอรีย่อยของ ~ / .emacs.d /?
ทิม

คุณคือคนที่สามารถตอบองค์กรที่อาจช่วยให้คุณเข้าใจได้ดีขึ้น (Emacs ไม่เข้าใจอะไรเลย) ใช้โครงสร้างโฟลเดอร์ที่คุณต้องการ เรียกพวกเขาว่าตู้ลิ้นชักชั้นวางหนังสือหรือเพียงแค่โฟลเดอร์ และอีกครั้งของคุณinit.elห้องสมุดโหลดสามารถอยู่ได้ทุกที่ไม่เพียง ~/.emacs.d/แต่ภายใน
ดึง

7

ฉันจะใช้ข้อเสนอแนะโดยtargzetaพบใน Emacs วิกิพีเดีย: ไดเรกทอรีโหลด

โดยทั่วไปฉันมี ~ / .emacs.d / load-directory.el:

;;;; ~/.emacs.d/load-directory.el

;; Handy function to load recursively all '.el' files in a given directory
(defun load-directory (directory)
  "Load recursively all '.el' files in DIRECTORY."
  (dolist (element (directory-files-and-attributes directory nil nil nil))
    (let* ((path (car element))
           (fullpath (concat directory "/" path))
           (isdir (car (cdr element)))
           (ignore-dir (or (string= path ".") (string= path ".."))))
      (cond
       ((and (eq isdir t) (not ignore-dir))
        (load-directory fullpath))
       ((and (eq isdir nil) (string= (substring path -3) ".el"))
        (load (file-name-sans-extension fullpath)))))))

จากนั้นฉันก็ใส่ไฟล์แยกใน ~ / .emacs.d / config ของฉัน:

~/.emacs.d/config ls
01-packages.el  02-style.el  03-modes.el  04-keybindings.el  05-functions.el

และในที่สุดฉันก็มีสิ่งนี้ใน ~ / .emacs.d / init.el ของฉัน:

;; Load all ".el" files under ~/.emacs.d/config directory.
(load "~/.emacs.d/load-directory")
(load-directory "~/.emacs.d/config")

ความต้องการให้เราให้ข้อมูลมากกว่าแค่ลิงค์ - เช่นคำอธิบายโดยสรุปของสิ่งที่อยู่ในลิงค์นั้น
ดึง

ถูกต้องฉันแก้ไขคำตอบของฉัน
Boccaperta-IT

ฮึ่ม ในฐานะที่เป็นมารยาทอย่างน้อยคุณอาจจะบอกว่ารหัสที่คุณ swiped คำต่อคำที่เขียนขึ้นโดยtargzeta การสรุปหน้าอ้างอิงข้ามไม่ได้หมายถึงการลอกเลียนเนื้อหา (แน่นอนถ้าคุณเป็นเป้าหมายที่กำหนดก็ไม่มีปัญหาน่าจะเป็น)
Drew

คุณถูกแก้ไขอีกครั้ง ขอบคุณ
Boccaperta-IT

ขอบคุณ (ฉันรู้ว่าต้องใช้เวลาเล็กน้อยในการทำสิ่งที่ถูกต้อง แต่จะช่วยให้ทุกคนเพิ่มขึ้นอีกเล็กน้อย)
Drew

5

เห็นได้ชัดว่ามีมากกว่าหนึ่งวิธีในการดูแลแมวตัวนี้ ปัจจุบันที่ชื่นชอบของฉันคือการใช้outline-minor-modeกับOutshine ข้อความที่ตัดตอนมา:

;; * This here is my emacs init file
;; ** Many subsections with headlines like this one omitted
;; ** Customising modes
;; […] more lines omitted
;; *** Org and outline modes
(autoload 'outshine-hook-function "outshine")
(add-hook 'outline-minor-mode-hook 'outshine-hook-function)
;; […] and more
;; * Emacs Magic
;;; Local Variables:
;;; mode: emacs-lisp
;;; coding: utf-8
;;; mode: outline-minor
;;; fill-column: 79
;;; End:

โปรดทราบว่าคุณจะต้องได้รับความชื่นชอบจากที่เก็บแพ็คเกจที่คุณชื่นชอบ


1
ฉันเริ่มจากโหมดเค้าร่างรองลงมา แต่พบว่าการโยงคีย์เจ็บปวดเกินไปและไม่เคยมีเวลาทำอะไรเกี่ยวกับมันเลย ดังนั้นฉันจึงย้ายไปที่โหมดโครงสร้างหลังจากค้นพบโหมดองค์กร แต่แล้วฉันก็ค้นพบว่ามีความสดใส บลิส! ขณะนี้ฉันใช้เค้าร่าง + ความโดดเด่นสำหรับโครงสร้างทั้งหมดของ elisp, latex และไฟล์อื่น ๆ ด้วยโหมดหลักของพวกเขาเองและโหมด org-note สำหรับบันทึกทุกชนิด
Harald Hanche-Olsen

2

ฉันใช้โครงสร้างต่อไปนี้เพื่อติดตามแพ็คเกจและไฟล์

~/.emacs.d
|-- elpa            ;; Package.el packages
|-- hack            ;; Development versions of packages (e.g. org, personal packages)
|-- single-lisp     ;; Individual lisp files from outside sources (e.g. EmacsWiki)
|-- site-lisp       ;; Lisp packages not managed by package.el (directories)
|-- user-config     ;; Machine/situation specific customization (work vs home)
|   `-- custom.el   ;; Customization settings
|-- lisp            ;; Individual .el files to keep init.el clean
|   `-- defaults.el ;; Default configuration settings
`-- init.el

ฉันจะใช้use-packageเพื่อจัดการแพคเกจที่ถูกโหลดและการกำหนดเองที่ถูกตั้งค่าไว้สำหรับแต่ละแพ็คเกจ เวลาส่วนใหญ่เท่านั้นhackและelpaจำเป็นต้องมีการปรับปรุงโฟลเดอร์อื่น ๆ มักจะเป็นแพคเกจแบบครั้งเดียวที่ฉันต้องการทดสอบหรือใช้งานสั้น ๆ แต่ไม่จำเป็นต้องโหลด

custom.el ใช้สำหรับปรับแต่งการตั้งค่าซึ่งฉันไม่ต้องการใช้ (และห้ามใช้เวอร์ชั่นแม้ว่าฉันจะใช้)

defaults.elสำหรับการกำหนดค่าทั่วไป (เมนูบาร์แบบอักษรการเข้ารหัส ฯลฯ ) ที่สามารถเขียนทับในไฟล์. el ใด ๆuser-config/เพื่อให้ระบบที่ทำงานได้ตามที่ฉันคาดหวัง แต่สามารถปรับให้เหมาะกับสภาพแวดล้อมได้

ผมเคยพยายามที่จะให้functions, macros, adviceในแพคเกจที่แยกต่างหากเพื่ออนุญาตให้มีการวาดภาพระหว่างเนื้อหา แต่วิ่งเข้าไปในความหมาย / init.elต้องปัญหาจึงได้นำกลับมาเหล่านั้นลง ~/.emacs.d/lisp/พวกเขาอาจได้รับการใส่กลับเข้าไป

ฉันพยายามที่จะจัดinit.elระเบียบเรียงลำดับเนื้อหาตามหน้าที่และวัตถุประสงค์เพื่อให้การค้นหามันอีกครั้งตรงไปตรงมา ฉันมีinit.elไฟล์เสาหินและยังคงเพิ่มเนื้อหาใหม่ในตอนท้าย (หรือที่ฉันคิดว่ามันอาจจะพอดี) และจากนั้นจะจบลงโดยไม่รู้ว่าสิ่งที่ฉันได้เพิ่มหรือที่ฉันได้เพิ่มเมื่อฉันไปหามัน (และ บางครั้งการค้นหาโดยใช้isearchไม่ได้ช่วยเพราะฉันจำไม่ได้ว่าฉันตั้งชื่อสิ่งต่าง ๆ อย่างไรในเวลานั้น)


2

คำตอบที่มีอยู่ทั้งหมดกล่าวถึงแนวปฏิบัติที่ดีที่สุดสำหรับการจัดระเบียบ ไฟล์ที่สร้างขึ้นด้วยตนเองเช่นinit.elและเพื่อน ๆ ความสำคัญเท่าเทียมกันคือการจัดระเบียบไฟล์ทั้งหมดที่สร้างขึ้นโดยอัตโนมัติจากแพ็คเกจต่าง ๆ และสำหรับแพ็คเกจno-litteringนี้ถือว่ายอดเยี่ยม


1

ฉันเพิ่ม

  (when (string= (buffer-name) "init.el")
    (setq imenu-generic-expression
      '((nil "^;; \\[ \\(.*\\)" 1))))

เพื่อ emacs-lisp-mode-hook จากนั้นเพิ่มไปยังส่วนของไฟล์ "yasnippet", "packaging", "โหมด java" ฯลฯ ใช้งานได้ดีสำหรับรหัสบรรทัด 1,000 บรรทัดของฉัน (รวมถึงความคิดเห็น)

แก้ไข: ในที่สุดฉันสลับระหว่างส่วนด้วย helm-imenu จริงๆแล้วหางเสือขอเกี่ยวกับฟังก์ชั่น imenu ปกติโดยอัตโนมัติดังนั้นสิ่งที่ฉันต้องการคือ

       (local-set-key (kbd "C-*") 'imenu)

คุณสามารถใช้ตัวแปรโลคัลไฟล์แทนการใช้ hook
YoungFrog

1

ฉันแบ่ง.emacsไฟล์ขนาดค่อนข้างเล็กของฉันออกเป็นสามส่วน:

  • emacs-custom.elสำหรับการปรับแต่งการดึงข้อมูลขนาดใหญ่และไร้ประโยชน์ออกมามากมาย ไฟล์ดังกล่าวจะถูกเขียนใหม่โดยอัตโนมัติโดยไม่ต้องแตะไฟล์. emacsหลักเพื่อป้องกันการเปลี่ยนแปลงปลอม

    (setq custom-file "~/.emacs-custom.el")
    (load custom-file)
    
  • lg-lib.elสำหรับรหัสแทนการกำหนดค่า: โหลดไลบรารีของฉันเองจากแหล่งที่ไม่ได้มาตรฐานมากกว่าจากไดเรกทอรีแพ็คเกจและกำหนดฟังก์ชั่นต่าง ๆ (ส่วนใหญ่คัดลอกและแฮ็กในกรณีที่ไม่มีแพ็คเกจที่เหมาะสม) มันเป็นอีกหนึ่งการลดขนาดใหญ่ของ. emacsนับบรรทัด

    (load "~/lg-lib")
    
  • ไฟล์. emacsหลัก: หากไม่มีโค้ดขนาดใหญ่และตัวแปรการกำหนดเองขนาดใหญ่จะมีการrequireเรียกแพคเกจตัวแปรที่ไม่ได้เป็นส่วนหนึ่งของระบบปรับแต่งและการเรียกใช้ฟังก์ชั่นต่างๆเพื่อโหลดและเริ่มต้นแพ็คเกจ ฉัน "จัดระเบียบ" โดยการรักษาบรรทัดทั้งหมดที่เกี่ยวข้องกับแพ็กเกจหรือคุณลักษณะเดียวกันไว้อย่างระมัดระวังและแยกการโหลดแพ็คเกจและการตั้งค่าที่เกี่ยวข้องกับแพ็คเกจออกจากการทำงานของ "คอร์" ข้อความที่ตัดตอนมาจากตัวแทนค่อนข้าง:

    (require 'ido)
    (ido-mode t)
    
    (require 'auto-complete)
    (add-to-list 'ac-dictionary-directories "~/.emacs.d/ac-dict")
    
    (require 'auto-complete-config)
    (ac-config-default)
    (global-auto-complete-mode t)
    

    ส่วนเหล่านี้มีขนาดเล็ก แต่ก็สามารถจัดการได้ด้วยการกำหนดค่าอีกมากมายสำหรับแต่ละแพ็คเกจ


1

ติดตามการตั้งค่าของ Emacs master เช่น https://github.com/purcell/emacs.d

ตัวอย่างเช่นเกี่ยวกับวิธีจัดระเบียบแพ็คเกจที่ติดตั้งด้วยตนเองและแพ็คเกจที่ติดตั้งจาก ELPA การตั้งค่าของ Steven Purcell มี

a place for 3rd party code which isn't available in MELPA or other
package repositories. This directory and its immediate
subdirectories will be added to load-path at start-up time.

Notably, in Emacs 23.x, a backported package.el is automatically
downloaded and installed here

ทำไมต้องติดตามผู้เชี่ยวชาญ ประเด็นสำคัญของ"อาจารย์ emacsของฉันในหนึ่งปี"คือมือใหม่สามารถหลีกเลี่ยงค่าใช้จ่ายในการติดตั้งและ "gotchas" ได้อย่างมีประสิทธิภาพ

ฉันเข้าใจว่าหลายคนไม่เห็นด้วยกับฉัน แต่นี่คือกรณีของฉัน (รายละเอียดในบทความของฉัน ):

ฉันเริ่มใช้ Emacs โดยใช้ดาวที่มีชื่อเสียงของ Purcell ( 1403 GitHub ดาว ณ เดือนพฤศจิกายน 2014!) การกำหนดค่าที่มั่นคง (5 ปีในการพัฒนา) แม้จะเริ่มต้นจากนั้นฉันยังคงมีปัญหามากมาย Steve Purcell ช่วยฉันแก้ปัญหาทั้งหมด (จริง ๆ แล้วฉันกลายเป็นPadawanมานานกว่าหนึ่งปี) โดยใช้การตั้งค่าของเขาและใช้ปัญหาของ repo เพื่อรายงานปัญหาและการใช้ประโยชน์จากประสบการณ์ของเขาฉันหลีกเลี่ยงการเสียเวลามาก แม้วันนี้ฉันยังคงสังเกตเห็นคนจำนวนมากที่ใช้git submoduleเพื่อจัดการปลั๊กอินของบุคคลที่สาม ทั้ง Steve และฉันเลิกใช้git submoduleเพราะสิ่งนี้อาจเป็นPITA PITA

แต่ถ้าคุณมีความมั่นใจในทักษะของคุณหรือชอบเรียนรู้ด้วยตนเองมากนี่ไม่ใช่เส้นทางสำหรับคุณ


2
" การโคลนการตั้งค่าจากต้นแบบ ": โดยไม่คำนึงถึงการอ้างอิงที่คุณอ้างถึงซึ่งอาจมีคุณสมบัติหรือคำแนะนำที่ยอดเยี่ยม (ฉันไม่ได้ตรวจสอบ) ฉันไม่เห็นด้วยโดยทั่วไปว่าผู้คนควรเริ่มต้นด้วยการโคลนนิ่งไฟล์ init หรือการตั้งค่าอื่น ๆ นั่นเป็นนโยบายที่ท้อใจอย่างชัดเจน IIRC เนื่องจากอาจนำไปสู่ปัญหาได้ ดีกว่าที่จะเริ่มจากศูนย์และระวัง (และเข้าใจ!) สิ่งที่คุณใช้เป็นการตั้งค่าพื้นฐาน แน่นอนว่าไม่มีอะไรผิดปกติกับการเรียนและการเรียนรู้จากสิ่งที่คนอื่นทำ แต่แนะนำให้คัดลอกไฟล์ init แบบสุ่มสี่สุ่มห้า (เพียงความเห็นเดียว)
ดึง

1
ที่จริงฉันเขียนบทความของฉันเพราะยังมีหลายคนเชื่อว่าพวกเขาควรเริ่มต้นจากขั้นตอนการตั้งค่า มันไม่ใช่วิธีที่ดีที่สุดสำหรับคนส่วนใหญ่อย่างที่ฉันสังเกตและเป็นวิธียากสำหรับมือใหม่ เพียงแค่ค้นหา
เฉินถัง

1
มันคือ " วิธีที่ดีที่สุดสำหรับคนส่วนใหญ่ " เพียงค้นหาการสนทนาและคำแนะนำไม่ให้เริ่มโดยใช้ไฟล์ init ของคนอื่น ค้นหาhelp-gnu-emacs@gnu.orgและwww.emacswiki.orgและและแม้กระทั่งemacs-devel@gnu.org debbugs.gnu.orgที่กล่าวว่าไม่มีอะไรผิดปกติในการแบ่งปันไฟล์ init ของตัวเองเพื่อรับใช้ผู้อื่นเป็นอาหารสำหรับความคิด คำแนะนำสำหรับมือใหม่ที่จะไม่เริ่มต้นด้วยวิธีนั้น คำแนะนำไม่ได้สำหรับคนที่จะไม่แบ่งปันวิธีการเริ่มต้นและเคล็ดลับของตัวเอง
ดึง

1
มันเป็นเพราะ "อคติผู้รอดชีวิต" หลายคนยอมแพ้ก่อนที่พวกเขาจะรู้จัก emacswiki หรือรายชื่อผู้รับจดหมาย
เฉินบิน

0

วิธีที่เป็นนวัตกรรมและเรียบง่ายในการล้าง.emacs.dโฟลเดอร์ของคุณคือการใช้org-modeและจัดเค้าร่างทุกอย่างโดยใช้บล็อกแหล่งที่มา จากนั้นใน.emacsไฟล์ของคุณให้ชี้ไปที่ของคุณconfig.orgแฟ้มชี้ไปที่ของคุณ

ทรัพยากรที่ยอดเยี่ยมสำหรับสิ่งนี้คือ Harry Schwartz เขามีวิดีโอ youtubeที่สัมผัสและโพสต์บล็อกที่อธิบายรายละเอียด ฉันสามารถติดตามได้ในฐานะ emacs noob และรับการตั้งค่าทั้งหมด ทำงานเหมือนจับใจ 1 initไฟล์ทั้งหมดของฉัน

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