- จัดสภาพแวดล้อม Emacs ให้เหมือน IDE กระแสหลัก เพื่อให้ผู้เริ่มต้นใช้งานได้ทันที
- จำลองฟีเจอร์หลักอย่าง ธีม VSCode, ตัวสำรวจไฟล์, แท็บ, มัลติเคอร์เซอร์, การเติมคำอัตโนมัติ บน Emacs
- รองรับ GUI และการใช้งานด้วยเมาส์ เป็นค่าเริ่มต้น และตั้งค่าได้ผ่านอินเทอร์เฟซ
custom - มอบสภาพแวดล้อมการแก้ไขที่ครบถ้วนสำหรับทั้ง นักพัฒนา Lisp (Sly/Geiser) และผู้ที่ไม่ใช่โปรแกรมเมอร์
- ลดอุปสรรคในการเริ่มต้นใช้ Emacs เดิมลง พร้อมเป็น จุดเริ่มต้นที่ช่วยให้ผู้ใช้ใหม่ปรับตัวได้ง่าย
ภาพรวมของ IDEmacs
- IDEmacs คือ ชุดการตั้งค่า ที่ทำให้ Emacs ใช้งานได้เหมือน GUI IDE อย่าง Visual Studio Code หรือ Sublime Text
- ยังคงความสามารถอันทรงพลังของ Emacs ไว้ พร้อมมอบอินเทอร์เฟซที่ผู้เริ่มต้นคุ้นเคย
- กลุ่มเป้าหมายหลักมี 3 กลุ่มดังนี้
- โปรแกรมเมอร์ที่ย้ายมาจาก IDE อื่น หรือผู้ใช้ที่เพิ่งเริ่มเรียนเขียนโค้ด
- ผู้เริ่มต้น Common Lisp และ Scheme (มี Sly/Geiser และฟีเจอร์แก้ไขเชิงโครงสร้างรวมอยู่)
- ผู้ที่ไม่ใช่โปรแกรมเมอร์ที่ต้องการแก้ไขเอกสาร Org, Markdown, LaTeX
- มีเป้าหมายเพื่อลดอุปสรรคในการเริ่มต้น โดยมอบ สภาพแวดล้อมพร้อมใช้งานทันที ให้กับผู้ใช้ที่ไม่คุ้นกับประสบการณ์พื้นฐานของ Emacs
คุณสมบัติหลัก
- รองรับ GUI และเมาส์
- ต่างจาก starter kit ส่วนใหญ่ที่มักซ่อนองค์ประกอบ GUI ไว้
- รองรับการตั้งค่าผ่าน
customGUI (ไม่จำเป็นต้องแก้ไข Elisp โดยตรง)
- คีย์ไบน์ดิงสไตล์ IDE
- อิงจากโหมด CUA และจำลองคีย์ลัดที่ใช้ใน VSCode เป็นต้น ได้อย่างกว้างขวาง
- ต่างจาก Spacemacs และ Doom ที่ใช้โหมด
Evilโดยเน้นการใช้งานแบบ GUI เป็นศูนย์กลาง
- การตั้งค่าระดับดิสทริบิวชัน Emacs ที่สมบูรณ์
- ทำงานได้รวดเร็วและแทบไม่ต้องตั้งค่าเพิ่มเติม
- ประกอบด้วย โค้ด Elisp ที่มีคอมเมนต์อย่างละเอียด จึงใช้เป็นสื่อการเรียนรู้ได้ด้วย
- ระดับเป้าหมาย ไม่ใช่การลอกแบบอย่างสมบูรณ์ แต่เป็นการมอบประสบการณ์ที่ “คล้ายพอมาก”
การตั้งค่า VSCode (อยู่ระหว่างดำเนินการ)
- เป็นการตั้งค่า IDE เพียงแบบเดียวที่มีให้ในตอนนี้
- องค์ประกอบที่รวมอยู่
- ธีม VSCode Dark Plus
- ตัวสำรวจไฟล์แถบด้านข้าง Treemacs
- แถบแท็บ Centaur Tabs
- breadcrumb สำหรับแสดงพาธไฟล์
- idle-highlight-mode สำหรับไฮไลต์สัญลักษณ์อัตโนมัติ
- รองรับคีย์ลัดส่วนใหญ่ของ VSCode ในหมวด “General”, “Basic Editing”, “Rich Languages Editing”, “Multi-cursor”
- แพ็กเกจหลัก
- การแก้ไข:
whole-line-or-region,expand-region,multiple-cursors,smartparens - การจัดการเวอร์ชัน:
vc,magit,diff-hl,blamer - การเติมคำอัตโนมัติ:
Vertico,orderless,Consult,marginalia,company - การพัฒนา Lisp:
sly,geiser,adjust-parens - อื่น ๆ:
eat(เทอร์มินัล),org-superstar,pdf-tools,undo-tree,helpful,rainbow-mode - การจัดระเบียบโค้ดจัดการด้วย
use-package
- การแก้ไข:
การตั้งค่าคีย์ไบน์ดิง
- แมปคีย์ลัดของ VSCode เข้ากับคำสั่งของ Emacs
- ตัวอย่าง:
C-S-p→ Command Palette (execute-extended-command)C-p→ เปิดไฟล์ (consult-locate)C-S-n→ หน้าต่างใหม่ (make-frame)C-w→ ปิดหน้าต่าง (idemacs-kill-buffer-noprompt)C-,→ การตั้งค่าผู้ใช้ (customize)
- ตัวอย่าง:
- มีการกำหนดคำสั่งที่สอดคล้องกันแยกตามหมวดย่อย เช่น การแก้ไขพื้นฐาน, มัลติเคอร์เซอร์, การนำทาง, การจัดการไฟล์, การควบคุมการแสดงผล
- คีย์ลัดบางส่วนมีพฤติกรรมต่างจาก VSCode และถูกทำเครื่องหมายเป็น TODO
คำขอเข้าร่วมและมีส่วนร่วม
- ขอให้ผู้ใช้ส่งฟีดแบ็กหลังจากใช้งาน IDEmacs
- เช่น การสังเกตผู้ใช้มือใหม่ หรือการแชร์ความคิดเห็นผ่าน Jabber/XMPP หรือ issue tracker
- สำหรับนักพัฒนา มีการแนะนำให้ช่วยปรับปรุงโค้ดและขยายฟีเจอร์
โปรเจกต์ที่เกี่ยวข้อง
- Mousemacs (GitHub: seamus-brady/mousemacs)
- ดิสทริบิวชันที่ทำให้ Emacs ทำงานคล้าย Sublime Text หรือ VSCode
- สร้างขึ้นเพื่อการเรียนรู้ Lisp และมีอินเทอร์เฟซที่เป็นมิตรกับเมาส์
- คงความสามารถทั้งหมดของ Emacs ไว้ พร้อมธีมที่เรียบง่าย
วิธีติดตั้งและใช้งาน
- สิ่งที่ต้องมี
- Emacs 29 ขึ้นไป,
git, ฟอนต์ DejaVu Sans Mono
- Emacs 29 ขึ้นไป,
- สิ่งที่เลือกติดตั้งได้
grep,locateหรือplocate
- ขั้นตอนการติดตั้ง
- โคลนรีโพซิทอรี
git clone https://codeberg.org/IDEmacs/IDEmacs - เปิด Emacs ขณะเชื่อมต่ออินเทอร์เน็ต
emacs --init-directory=/path/to/IDEmacs/vscode
- เมื่อเปิดใช้งาน ระบบจะดาวน์โหลดแพ็กเกจ Emacs ที่จำเป็นโดยอัตโนมัติ
- โคลนรีโพซิทอรี
อื่น ๆ
- ขณะนี้ยังไม่มีสไตล์ IDE อื่นนอกเหนือจากการตั้งค่า VSCode
- มีการกล่าวถึงความเป็นไปได้ในการสร้าง GUI แบบใหม่ หากมีทรัพยากรเพียงพอในอนาคต
- ไม่มีข้อมูลเพิ่มเติมในต้นฉบับ
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
คนที่คิดว่า VSCode ใช้ง่าย ควรเช็กความเป็นจริงหน่อย
ตอนเปิดครั้งแรกมันให้ความรู้สึกถาโถมด้วยป๊อปอัป แถบข้าง ทูลทิป และอื่น ๆ
ฉันก็เป็นผู้ใช้ Emacs แต่ก็ไม่ได้อ้างว่า Emacs ใช้งานได้อย่างเป็นธรรมชาติ
เพียงแต่ VSCode เองก็ไม่ใช่เครื่องมือที่ง่ายราวกับเวทมนตร์ มันแค่เป็น ตัวเลือกกระแสหลัก เท่านั้น
ขอบเขตการโต้ตอบของผู้ใช้ส่วนใหญ่ก็มีแค่ file tree, editor, terminal, tab completion และการติดตั้งส่วนขยาย
ถ้าไม่ได้มีมาให้ตั้งแต่แรกหรือเพิ่มได้ง่ายผ่านส่วนขยาย คนส่วนใหญ่ก็จะไม่ใช้
แต่ความซับซ้อนของ VSCode ยังเทียบกับ vim หรือ Emacs ไม่ได้เลย
ดูบทสอนสั้น ๆ หรือเล่นสักประมาณ 30 นาทีก็คุ้นได้แล้ว
ในขณะที่ neovim ถึงขั้นต้องมีหนังสือทั้งเล่ม
ไม่นานมานี้ลอง RustRover แล้วพบว่าสร้างการตั้งค่าที่ต้องการด้วยการคลิกอย่างเดียวได้ยาก
เลยรู้สึกว่าความ “ง่าย” ของ IDE อาจเป็นภาพลวงมากกว่าที่คิด
มีเครื่องมือจำนวนมากที่รองรับอินเทอร์เฟซทั่วไปอย่างตัวเลือกไฟล์มาตรฐานหรือคีย์ลัดแบบ CUA
เพราะงั้นตอนนี้เลยใช้ทางเลือกอย่าง Zim-wiki แทน Emacs แล้วพอใจกว่า
แต่ถ้าเคยทำงานโดยยึด tmux, vi, nano, emacs เป็นหลัก ก็อาจจะตกใจได้
Emacs ไม่ใช่แค่ IDE ธรรมดา แต่เป็นเครื่องมือที่มี ปรัชญาและเสรีภาพ อยู่ในตัว
ถึงจะมีหลายโปรเจกต์ที่โฟกัสการใช้งานด้านการเขียนโปรแกรมเป็นหลัก แต่ใน VSCode เองก็ทำได้ราว 75% ด้วยคีย์ไบน์ดิงแบบ Emacs
แก่นของ Emacs คือการยื่น “กล่องชิ้นส่วน” ให้แล้วให้ผู้ใช้ประกอบเอง
มันเหมือน “อาวุธอันสง่างามของยุคที่ศิวิไลซ์”
โครงสร้างข้อมูลส่วนใหญ่เปลี่ยนแปลงได้ และมีฟังก์ชันเชิงคำสั่งอย่าง setq อยู่มาก
สงสัยว่า เลย์เอาต์หน้าต่างแบบตายตัว ใน Emacs จะใช้งานได้ดีจริงหรือไม่
ตอนที่เคยลองก่อนหน้านี้ แผง Treemacs มักแสดง code buffer แทน file viewer
ช่วงหลังการตั้ง Emacs ให้เป็น IDE ทำได้ง่ายขึ้นมาก
ด้วย eglot ที่มีมาในตัว ทำให้ต้องเขียนโค้ด elisp น้อยลงกว่าสมัยก่อนมาก และการตั้งค่า Python ก็พอแค่บรรทัดเดียว
เพราะงั้นโปรเจกต์แบบนี้จึงใกล้เคียงกับ ประตูสำหรับผู้เริ่มต้น มากกว่าจะเป็นของสำหรับผู้ใช้เดิมแบบฉัน
ทั้ง OCaml REPL, อีมูเลเตอร์ 68000 และการรวมกับ gdb ก็ทำได้โดยแทบไม่ต้องตั้งค่าอะไรเลย
หลังจากนั้นย้ายไป vim เพราะสภาพแวดล้อมเซิร์ฟเวอร์ระยะไกล แต่พอกลับมาลอง Emacs อีกครั้งไม่นานนี้ก็พบว่า การจัดการแพ็กเกจ ดูประณีตขึ้นมาก
เพียงแต่เครื่องมือสาย DevOps/SRE ยังขาดอยู่
ชอบ โปรเจกต์รวมแพ็กเกจ อย่าง Spacemacs และ Doom
แม้จะไม่ได้ใช้เอง แต่พวกมันช่วยให้เจอแพ็กเกจใหม่ ๆ และหาเหตุผลมานั่งแต่งค่าคอนฟิกอีกครั้ง
เป็นชื่อที่เรียบง่ายแต่ตรงจุดมากจนเผลอยิ้มออกมา
อยากให้มีโปรเจกต์ที่ สร้าง UI ของ Emacs ใหม่ให้ทันสมัย
โดยคงแกนหลักเดิมไว้ แต่ทำอินเทอร์เฟซให้แยกแยะด้วยสายตาได้ชัดขึ้นและล้าตาน้อยลง
ฟีเจอร์แบบใน editor เก่าที่เขียนด้วย Lisp ซึ่งกด Ctrl แล้วมีคำแนะนำคีย์ลัดขึ้นมาก็ดีเหมือนกัน
UI ใช้ได้อยู่แล้ว และปัญหาที่เร่งด่วนกว่าคือ สถาปัตยกรรมแบบเธรดเดียวกับอาการค้างบ่อย ๆ
สภาพที่ต้องกด C-g วันละครั้งอย่างน้อยควรได้รับการแก้ไข
มันทำงานบน curses/SDL2 และสืบทอดสไตล์แบบ Emacs
เมื่อก่อนเป็นแพ็กเกจภายนอก แต่ช่วงหลังถูกรวมเข้า Emacs ตัวหลักแล้ว
ลิงก์คอมมิตที่เกี่ยวข้อง
จุดแข็งมากคือไม่ว่าจะเป็นสภาพแวดล้อมกราฟิกหรือเทอร์มินัล ก็ทำงานด้วยหน้าตาเดียวกัน
โดยเฉพาะที่ Treemacs ดูเหมือนกันทุกที่นี่แหละที่ชอบมาก
น่าเสียดายที่ OniVim v2 ไม่ประสบความสำเร็จ
มันเป็น IDE แบบเนทีฟและรองรับระบบปลั๊กอินของ VSCode ได้ครบถ้วน
ลิงก์คลังเก็บ OniVim v2
ซึ่งน่าจะมีประโยชน์กับนักพัฒนา GUI frontend คนอื่นด้วย
Neovim สื่อสารผ่าน RPC แต่ประสิทธิภาพก็เร็วพอ
ปลั๊กอิน Neovim สำหรับ VSCode ก็ให้ประสบการณ์ vim แบบเต็มรูปแบบได้เพราะโครงสร้างนี้
ผู้ใช้ Vim คงไม่ชอบ input lag ของ Electron กับ EULA และผู้ใช้ VSCode ก็ไม่ได้สนใจ Vim
ใช้ Emacs มามากกว่า 25 ปี และสิ่งแรกที่ทำในเครื่องใหม่ทุกครั้งคือ ปิดองค์ประกอบ GUI
ไม่เคยใช้เมนูหรือทูลบาร์เลย
แต่ศาสตราจารย์ที่ปรึกษาของฉันกลับใช้ Emacs แบบพื้นฐานด้วยเมาส์ในการทำงาน LaTeX ซึ่งเป็นประสบการณ์ที่สดใหม่ทีเดียว
ฉันคงใช้ Doom Emacs ต่อไป แต่ยินดีต้อนรับความพยายามแบบนี้
Emacs มี ปลั๊กอิน UI ที่ล้ำสมัย อย่าง Vertico อยู่มาก แต่ประสบการณ์ตั้งต้นยังไม่ดีพอ
ถ้าโปรเจกต์แบบนี้ช่วยทำให้ Emacs เข้าถึงได้ สำหรับคนจำนวนมากขึ้น ก็เป็นเรื่องที่ดี
ใช้ Emacs มามากกว่า 15 ปีแล้ว และ ความต้องการเดียว ของฉันคือโหมด client-server ที่แก้ไขไฟล์ระยะไกลได้แบบ VSCode
ถ้ามีโซลูชันที่ทำงานได้ดีแม้ในสภาพแวดล้อมที่มี latency สูงก็คงดีมาก
ถ้าไม่มี ฉันก็คิดจะลองทำเอง
ถึงอย่างนั้นการรวม Python ของ VSCode ก็ถือว่าทำได้ค่อนข้างดี