Doom Emacs เป็น distribution ที่มุ่งสร้างวิธีที่ง่ายและเข้าถึงได้ง่ายสำหรับเริ่มต้นใช้งาน Emacs เนื่องจากเอกสารประกอบนับร้อยหน้าที่อธิบายฟังก์ชันต่างๆ Emacs เองอาจดูน่ากลัว
สิ่งนี้ช่วยผู้ใช้ที่คุ้นเคยแล้วและหนังสือพิมพ์ แต่แนวทางแบบไม่ التدخل (hands-off) ไม่ช่วยคนที่เพียงสนใจลองใช้งาน
Doom Emacs มุ่งตัดส่วนเกินและกลั่นกรองประสบการณ์ Emacs ให้เหลือจุดแข็งหลัก ช่วยให้ผู้ใช้ใช้ความยืดหยุ่นได้โดยไม่ต้องเช็กคู่มือตลอดเวลาสำหรับงานพื้นฐาน ผลลัพธ์คือ Emacs เวอร์ชันที่ปรับแต่งและแก้ไขได้ง่ายตามความต้องการผู้ใช้
การติดตั้ง Doom Emacs ค่อนข้างง่าย ต้องการ 3 สิ่งก่อน:
- Emacs 27.1 ติดตั้งแบบ vanilla
- ripgrep
- Git
ติดตั้ง Emacs และ ripgrep
Emacs และ ripgrep มีใน repository ของทุก major Linux distribution ตัวอย่างเช่น ติดตั้งบน Debian และ Ubuntu 21.10 ด้วย apt:
sudo apt install emacs-gtk ripgrep
Arch Linux ใช้ pacman:
sudo pacman -Syu emacs ripgrep
Fedora ใช้ dnf:
sudo dnf install emacs ripgrep
Void Linux ใช้ xbps:
sudo xbps-install emacs-gtk2 ripgrep
ในกรณีของผม ติดตั้งบนระบบ Void Linux
สำคัญคือ Emacs มีหลายรูปแบบ Package manager มักเลือกเวอร์ชันที่เหมาะสม แต่บางครั้งกระบวนการนี้ล้มเหลว
ควรระวังเวอร์ชันที่ติดตั้ง เราต้องการเวอร์ชันที่รันในสภาพแวดล้อมกราฟิก:
- X11
- GTK-2
- GTK-3
หลังจากนั้น จึงดำเนินการติดตั้ง Git
ติดตั้ง Git
เพื่อติดตั้ง Doom Emacs ต้องดึง remote code repository จากอินเทอร์เน็ต ติดตั้ง Git เพื่อคัดลอกโค้ดและสำคัญกว่านั้นคือ อัปเดตระหว่าง major versions
คล้าย Emacs Git มีในทุก Linux distribution ติดตั้งบน Debian/Ubuntu ด้วย apt:
sudo apt install git
Arch Linux ใช้ pacman:
sudo pacman -Syu git
Fedora ใช้ dnf:
sudo dnf install git
Void Linux ใช้ xbps:
sudo xbps-install git
ในกรณีของผม ติดตั้ง Git บน Void Linux
ติดตั้ง Doom Emacs
ติดตั้ง Doom Emacs ต้องรันเพียงไม่กี่คำสั่ง:
git clone --depth 1 https://github.com/hlissner/doom-emacs ~/.emacs.d
คำสั่ง Git นี้ดึง repository Doom Emacs มาที่เครื่อง
cloneหมายถึงคัดลอก repository ล่าสุดเมื่อรันคำสั่งdepthตัดประวัติ repository เหลือ 2 เวอร์ชันล่าสุด
คำสั่งนี้บันทึก repository ไว้ในไดเรกทอรี config เริ่มต้นของ Emacs ต้องแน่ใจว่าไดเรกทอรีนี้ไม่มีอยู่แล้วด้วยคำสั่ง:
rm -rf /home/$USER/.emacs.d/
จากนั้นเริ่มติดตั้งด้วยคำสั่ง:
/home/$USER/.emacs.d/bin/doom install
คำสั่งนี้ติดตั้ง Doom Emacs ทับบนการติดตั้ง Emacs
การตั้งค่าหลังติดตั้ง
หลังจากนั้น มีอีกไม่กี่อย่างต้องทำเพื่อให้การติดตั้งไม่มีปัญหา
ก่อนอื่น ตั้งค่าตัวแปร PATH ให้ตรวจจับไดเรกทอรี "/home/$USER/.emacs.d/doom/bin/" โดยเพิ่มบรรทัดนี้ในไฟล์ "/home/$USER/.profile":
export PATH=$PATH:$HOME/.emacs.d/doom/bin
จะอัปเดตตัวแปร PATH รวมไดเรกทอรี bin ของ Doom หลังจากนั้น login ใหม่เพื่อโหลด environment variable ใหม่
ทดสอบว่า PATH ตรวจจับไดเรกทอรี "/home/$USER/.emacs.d/doom/bin" ได้ด้วยคำสั่ง:
doom doctor
คำสั่งนี้ตรวจสอบว่าการติดตั้งทำได้ถูกต้อง หากมีปัญหา doom doctor จะแจ้งให้รู้
Doom Utility: เพื่อนร่วมทางใน Doom Emacs
doom doctor เป็นเพียงหนึ่งในฟังก์ชันของ doom utility โปรแกรมหลักที่ให้เราแก้ไข อัปเดต และซ่อมแซม Doom Emacs
ฟังก์ชันทั่วไปที่ควรทราบ:
doom doctorตรวจสอบความไม่สอดคล้องของการติดตั้งเริ่มต้น มีประโยชน์เมื่อเจอปัญหาขณะใช้ Doom Emacs จะเช็กไดเรกทอรีและ config ทั้งหมดหาข้อผิดพลาดdoom upgradeอัปเกรดการติดตั้งอย่างราบรื่น ตรวจสอบอัปเดตใน repository และซิงค์โค้ดกับเวอร์ชันล่าสุด รวมถึงจัดการ migration ระหว่างเวอร์ชัน โดย doom upgrade จะทำความสะอาด config ปัจจุบันและเตรียมอัปเกรดdoom purgeจัดการแพ็กเกจและโมดูลเก่าที่ติดตั้งไว้ หากลบแพ็กเกจเยอะ จะลบ dependencies ที่ไม่ได้ใช้ ยังสามารถบีบอัด repository ที่มีอยู่ด้วยแฟล็ก -gdoom syncแก้ไข custom config เมื่อติดตั้ง Doom Emacs จะสร้างไฟล์ config ส่วนตัวภายใต้ "/home/$USER/.doom.d/" การรัน sync จะเปิดใช้งาน config ที่แก้ใน .emacs.d ให้ .doom.d
ตั้งค่า Doom Emacs
ไดเรกทอรี .doom.d เป็นที่เก็บ config ทั้งหมดของ Doom ประกอบด้วย 3 ไฟล์:
- packages.el - บอกว่า ติดตั้งแพ็กเกจอะไร และจากที่ไหน
- config.el - ไฟล์สำหรับ custom config ของเรา รวมถึง config ของ Doom และแพ็กเกจเพิ่มเติม
- init.el - ส่วนสำคัญที่สุดของ Doom Emacs ที่นี่คือที่เปิด/ปิดฟีเจอร์ต่างๆ ของ distribution
Doom Modules
Doom Emacs ให้เลือกมากกว่า 150 โมดูล สามารถเปิดใช้งานได้โดยแค่เลือกที่ต้องการ ทำให้ปรับแต่ง Doom เป็นสภาพแวดล้อมคอมพิวติ้งของตัวเองได้
การเพิ่ม/ลบโมดูล คือการแก้ไขฟังก์ชัน doom! ในไฟล์ ".doom.d/init.el" ไวยากรณ์ทั่วไปประมาณนี้:
(doom! :checkers (syntax) :editor (evil) :lang (org +journal))
เพื่อเปิดโมดูล ต้องระบุหมวดหมู่ ในตัวอย่างนี้ เพื่อเพิ่มโมดูล syntax ต้องเพิ่มหมวดหมู่ checkers ก่อน
โมดูลเหล่านี้ยังมี flags ที่เปิดใช้งานได้สำหรับโมดูลเฉพาะ คล้าย USE flags ของ Gentoo ที่ปรับโปรแกรมให้ละเอียดโดยเปิดเฉพาะฟีเจอร์ที่ต้องการ
เพื่อเพิ่ม flag ให้โมดูล ใส่เครื่องหมาย "+" ตามด้วยชื่อ flag ในตัวอย่าง เพิ่ม flag journal ให้ org เพื่อเปิดใช้งาน journal support
เสร็จแล้ว รัน doom sync เพื่อโหลด Doom Emacs ใหม่กับการตั้งค่า
วิธีติดตั้งแพ็กเกจเพิ่มเติม
Doom Emacs มาพร้อมหลายแพ็กเกจตอนติดตั้ง แต่ติดตั้งซอฟต์แวร์เพิ่มจาก repository ได้ง่ายด้วยฟังก์ชัน package! ในไฟล์ ".doom.d/packages.el"
มีหลายวิธีติดตั้งแพ็กเกจใน Doom วิธีทั่วไปคือดึงจาก ELPA และ MELPA เพิ่มโค้ด Lisp นี้ใน packages.el:
(package! name-of-package)
จะบอกฟังก์ชัน package! เช็คทุก repository ทั่วไปสำหรับแพ็กเกจที่ระบุ
แต่ถ้าแพ็กเกจไม่มีใน repository ใดๆ สำหรับ Emacs สามารถติดตั้งจาก git repository โดยตรง:
(package! name-of-git-package :recipe (:host github :repo "username/package"))
จะบอก package! ดึงแพ็กเกจเฉพาะจาก github ภายใต้ repository "username/package"
สามารถระบุตำแหน่งเฉพาะใน remote repository ได้ เช่น ดึงแพ็กเกจจากที่เฉพาะใน repository:
(package! another-git-package :recipe (:host github :repo "username/package" :files ("package.el" "path/of/*.el")))
มีประโยชน์เมื่อติดตั้งจาก repository ที่มีหลายแพ็กเกจจัดใน subdirectories ระบุได้ว่าต้องการติดตั้งอะไรเป็นแพ็กเกจ
เสร็จแล้ว รัน doom sync เพื่อโหลด Doom Emacs ใหม่
ยินดีด้วย! ตอนนี้คุณมีการติดตั้ง Doom Emacs พื้นฐาน และเข้าใจวิธีทำงาน การตั้งค่า และการขยายฟังก์ชัน หากมองหาแอปพลิเคชันเพิ่มประสิทธิภาพใน Linux เรามีบทความสำหรับคุณ
คำถามที่พบบ่อย
1. ติดตั้ง Doom Emacs แล้ว แต่เปิดแล้วมีแค่หน้าจอว่าง
น่าจะเป็นเพราะปัญหาในไดเรกทอรี .doom.d ทำให้ Doom Emacs โหลดการตั้งค่าไม่ได้ วิธีแก้คือเช็คว่า .doom.d มีอยู่จริง และไฟล์ 3 ไฟล์ - init.el, packages.el, config.el - มีอยู่
อาจเกิดจาก init.el ที่สร้างขึ้นมีรูปแบบผิด หรือไม่มีฟังก์ชัน doom อยู่ภายใน ต้องสร้างบล็อกฟังก์ชัน doom พร้อมโมดูลที่ต้องการรันกับ Doom Emacs
2. ใช้ package.el จัดการแพ็กเกจ ใช้ได้ใน Doom Emacs ไหม?
ไม่ได้ Doom Emacs ใช้ package manager ตัวอื่น ต้องใช้ฟังก์ชัน package ของ Doom Emacs เพื่อติดตั้งซอฟต์แวร์เพิ่ม
3. ติดตั้งแพ็กเกจใน Doom Emacs แล้วไม่ต้องการแล้ว ถอนติดตั้งยังไง?
ถอนแพ็กเกจใน Doom Emacs ง่าย แค่รันโค้ด Lisp นี้ใน .doom.d/packages.el:
(package! some-package :disable t)
จากนั้นรัน doom sync โหลด Doom Emacs ใหม่ login ใหม่ แพ็กเกจนั้นจะถูกถอนติดตั้ง