1 คะแนน โดย GN⁺ 2025-11-17 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • จัดสภาพแวดล้อม 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 ไว้
    • รองรับการตั้งค่าผ่าน custom GUI (ไม่จำเป็นต้องแก้ไข 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
  • สิ่งที่เลือกติดตั้งได้
    • grep, locate หรือ plocate
    โฆษณา
  • ขั้นตอนการติดตั้ง
    1. โคลนรีโพซิทอรี
      git clone https://codeberg.org/IDEmacs/IDEmacs
      
    2. เปิด Emacs ขณะเชื่อมต่ออินเทอร์เน็ต
      emacs --init-directory=/path/to/IDEmacs/vscode
      
    • เมื่อเปิดใช้งาน ระบบจะดาวน์โหลดแพ็กเกจ Emacs ที่จำเป็นโดยอัตโนมัติ

อื่น ๆ

  • ขณะนี้ยังไม่มีสไตล์ IDE อื่นนอกเหนือจากการตั้งค่า VSCode
  • มีการกล่าวถึงความเป็นไปได้ในการสร้าง GUI แบบใหม่ หากมีทรัพยากรเพียงพอในอนาคต
  • ไม่มีข้อมูลเพิ่มเติมในต้นฉบับ

1 ความคิดเห็น

 
GN⁺ 2025-11-17
ความคิดเห็นบน Hacker News
  • คนที่คิดว่า VSCode ใช้ง่าย ควรเช็กความเป็นจริงหน่อย
    ตอนเปิดครั้งแรกมันให้ความรู้สึกถาโถมด้วยป๊อปอัป แถบข้าง ทูลทิป และอื่น ๆ
    ฉันก็เป็นผู้ใช้ Emacs แต่ก็ไม่ได้อ้างว่า Emacs ใช้งานได้อย่างเป็นธรรมชาติ
    เพียงแต่ VSCode เองก็ไม่ใช่เครื่องมือที่ง่ายราวกับเวทมนตร์ มันแค่เป็น ตัวเลือกกระแสหลัก เท่านั้น

    • UX ของ VSCode ถือว่าคุ้นเคย
      ขอบเขตการโต้ตอบของผู้ใช้ส่วนใหญ่ก็มีแค่ file tree, editor, terminal, tab completion และการติดตั้งส่วนขยาย
      ถ้าไม่ได้มีมาให้ตั้งแต่แรกหรือเพิ่มได้ง่ายผ่านส่วนขยาย คนส่วนใหญ่ก็จะไม่ใช้
    • เครื่องมือเฉพาะทางอย่าง IDEs, DAWs, โปรแกรมตัดต่อวิดีโอ ฯลฯ โดยเนื้อแท้แล้วเลี่ยง ความซับซ้อน ไม่ได้
      แต่ความซับซ้อนของ VSCode ยังเทียบกับ vim หรือ Emacs ไม่ได้เลย
      ดูบทสอนสั้น ๆ หรือเล่นสักประมาณ 30 นาทีก็คุ้นได้แล้ว
      ในขณะที่ neovim ถึงขั้นต้องมีหนังสือทั้งเล่ม
    • ฉันเองก็ใช้ Emacs ทุกวัน แต่ VSCode ให้ความรู้สึกว่า กระตุ้นประสาทและแข็งกระด้าง
      ไม่นานมานี้ลอง RustRover แล้วพบว่าสร้างการตั้งค่าที่ต้องการด้วยการคลิกอย่างเดียวได้ยาก
      เลยรู้สึกว่าความ “ง่าย” ของ IDE อาจเป็นภาพลวงมากกว่าที่คิด
    • ในฐานะคนที่ใช้ Emacs อยู่ 1 ปีแล้วสุดท้ายเลิกไป ฉันคิดว่า การทำงานร่วมกันได้ (interoperability) สำคัญกว่ามาก
      มีเครื่องมือจำนวนมากที่รองรับอินเทอร์เฟซทั่วไปอย่างตัวเลือกไฟล์มาตรฐานหรือคีย์ลัดแบบ CUA
      เพราะงั้นตอนนี้เลยใช้ทางเลือกอย่าง Zim-wiki แทน Emacs แล้วพอใจกว่า
    • สำหรับความเห็นที่ว่าป๊อปอัปและแถบข้างของ VSCode ดูเป็นภาระ ถ้าเป็นคนที่เคยใช้ IDE หนัก ๆ อย่าง Eclipse มาก่อนก็อาจกลับรู้สึกคุ้นเคย
      แต่ถ้าเคยทำงานโดยยึด tmux, vi, nano, emacs เป็นหลัก ก็อาจจะตกใจได้
  • Emacs ไม่ใช่แค่ IDE ธรรมดา แต่เป็นเครื่องมือที่มี ปรัชญาและเสรีภาพ อยู่ในตัว
    ถึงจะมีหลายโปรเจกต์ที่โฟกัสการใช้งานด้านการเขียนโปรแกรมเป็นหลัก แต่ใน VSCode เองก็ทำได้ราว 75% ด้วยคีย์ไบน์ดิงแบบ Emacs
    แก่นของ Emacs คือการยื่น “กล่องชิ้นส่วน” ให้แล้วให้ผู้ใช้ประกอบเอง
    มันเหมือน “อาวุธอันสง่างามของยุคที่ศิวิไลซ์”

    • แต่ Emacs Lisp เองก็ยากจะมองว่าเป็น ภาษาฟังก์ชันนัล
      โครงสร้างข้อมูลส่วนใหญ่เปลี่ยนแปลงได้ และมีฟังก์ชันเชิงคำสั่งอย่าง setq อยู่มาก
  • สงสัยว่า เลย์เอาต์หน้าต่างแบบตายตัว ใน Emacs จะใช้งานได้ดีจริงหรือไม่
    ตอนที่เคยลองก่อนหน้านี้ แผง Treemacs มักแสดง code buffer แทน file viewer

  • ช่วงหลังการตั้ง Emacs ให้เป็น IDE ทำได้ง่ายขึ้นมาก
    ด้วย eglot ที่มีมาในตัว ทำให้ต้องเขียนโค้ด elisp น้อยลงกว่าสมัยก่อนมาก และการตั้งค่า Python ก็พอแค่บรรทัดเดียว
    เพราะงั้นโปรเจกต์แบบนี้จึงใกล้เคียงกับ ประตูสำหรับผู้เริ่มต้น มากกว่าจะเป็นของสำหรับผู้ใช้เดิมแบบฉัน

    • ตอนใช้ Emacs ที่มหาวิทยาลัยเมื่อ 15 ปีก่อน มันก็ลื่นไหลพอสมควรแล้ว
      ทั้ง OCaml REPL, อีมูเลเตอร์ 68000 และการรวมกับ gdb ก็ทำได้โดยแทบไม่ต้องตั้งค่าอะไรเลย
      หลังจากนั้นย้ายไป vim เพราะสภาพแวดล้อมเซิร์ฟเวอร์ระยะไกล แต่พอกลับมาลอง Emacs อีกครั้งไม่นานนี้ก็พบว่า การจัดการแพ็กเกจ ดูประณีตขึ้นมาก
      เพียงแต่เครื่องมือสาย DevOps/SRE ยังขาดอยู่
  • ชอบ โปรเจกต์รวมแพ็กเกจ อย่าง Spacemacs และ Doom
    แม้จะไม่ได้ใช้เอง แต่พวกมันช่วยให้เจอแพ็กเกจใหม่ ๆ และหาเหตุผลมานั่งแต่งค่าคอนฟิกอีกครั้ง

    • ฉันก็ลองดูแพ็กเกจต่าง ๆ ในหน้า idemacs แล้ว ชื่อ ‘minimap’ สะดุดตาเป็นพิเศษ
      เป็นชื่อที่เรียบง่ายแต่ตรงจุดมากจนเผลอยิ้มออกมา
  • อยากให้มีโปรเจกต์ที่ สร้าง UI ของ Emacs ใหม่ให้ทันสมัย
    โดยคงแกนหลักเดิมไว้ แต่ทำอินเทอร์เฟซให้แยกแยะด้วยสายตาได้ชัดขึ้นและล้าตาน้อยลง
    ฟีเจอร์แบบใน editor เก่าที่เขียนด้วย Lisp ซึ่งกด Ctrl แล้วมีคำแนะนำคีย์ลัดขึ้นมาก็ดีเหมือนกัน

    • ฉันกลับเห็นตรงข้าม
      UI ใช้ได้อยู่แล้ว และปัญหาที่เร่งด่วนกว่าคือ สถาปัตยกรรมแบบเธรดเดียวกับอาการค้างบ่อย ๆ
      สภาพที่ต้องกด C-g วันละครั้งอย่างน้อยควรได้รับการแก้ไข
    • แม้จะไม่เหมือนกันเสียทีเดียว แต่ Lem ที่สร้างบน Common Lisp ก็น่าเอาไปดู
      มันทำงานบน curses/SDL2 และสืบทอดสไตล์แบบ Emacs
    • น่าจะหมายถึง which-key
      เมื่อก่อนเป็นแพ็กเกจภายนอก แต่ช่วงหลังถูกรวมเข้า Emacs ตัวหลักแล้ว
      ลิงก์คอมมิตที่เกี่ยวข้อง
    • ฉันอยาก คง UI ปัจจุบันไว้ ให้มากที่สุด
      จุดแข็งมากคือไม่ว่าจะเป็นสภาพแวดล้อมกราฟิกหรือเทอร์มินัล ก็ทำงานด้วยหน้าตาเดียวกัน
      โดยเฉพาะที่ Treemacs ดูเหมือนกันทุกที่นี่แหละที่ชอบมาก
  • น่าเสียดายที่ OniVim v2 ไม่ประสบความสำเร็จ
    มันเป็น IDE แบบเนทีฟและรองรับระบบปลั๊กอินของ VSCode ได้ครบถ้วน
    ลิงก์คลังเก็บ OniVim v2

    • OniVim แยกฟังก์ชันหลักของ vim ออกเป็นไลบรารีต่างหากชื่อ libvim
      ซึ่งน่าจะมีประโยชน์กับนักพัฒนา GUI frontend คนอื่นด้วย
      Neovim สื่อสารผ่าน RPC แต่ประสิทธิภาพก็เร็วพอ
      ปลั๊กอิน Neovim สำหรับ VSCode ก็ให้ประสบการณ์ vim แบบเต็มรูปแบบได้เพราะโครงสร้างนี้
    • แต่กลุ่มผู้ใช้เป้าหมายค่อนข้างคลุมเครือ
      ผู้ใช้ Vim คงไม่ชอบ input lag ของ Electron กับ EULA และผู้ใช้ VSCode ก็ไม่ได้สนใจ Vim
  • ใช้ Emacs มามากกว่า 25 ปี และสิ่งแรกที่ทำในเครื่องใหม่ทุกครั้งคือ ปิดองค์ประกอบ GUI
    ไม่เคยใช้เมนูหรือทูลบาร์เลย

    • ผู้ใช้ VSCode มักทำงานแบบ ยึดเมาส์เป็นหลัก โดยเฉพาะ แต่จุดแข็งของ Emacs คือสามารถแก้ไข Lisp machine ให้เป็นแบบที่ต้องการได้
    • ฉันเองก็ใช้ Emacs มากว่า 15 ปีและควบคุมทุกอย่างด้วยคีย์บอร์ดล้วน
      แต่ศาสตราจารย์ที่ปรึกษาของฉันกลับใช้ Emacs แบบพื้นฐานด้วยเมาส์ในการทำงาน LaTeX ซึ่งเป็นประสบการณ์ที่สดใหม่ทีเดียว
  • ฉันคงใช้ Doom Emacs ต่อไป แต่ยินดีต้อนรับความพยายามแบบนี้
    Emacs มี ปลั๊กอิน UI ที่ล้ำสมัย อย่าง Vertico อยู่มาก แต่ประสบการณ์ตั้งต้นยังไม่ดีพอ
    ถ้าโปรเจกต์แบบนี้ช่วยทำให้ Emacs เข้าถึงได้ สำหรับคนจำนวนมากขึ้น ก็เป็นเรื่องที่ดี

  • ใช้ Emacs มามากกว่า 15 ปีแล้ว และ ความต้องการเดียว ของฉันคือโหมด client-server ที่แก้ไขไฟล์ระยะไกลได้แบบ VSCode
    ถ้ามีโซลูชันที่ทำงานได้ดีแม้ในสภาพแวดล้อมที่มี latency สูงก็คงดีมาก
    ถ้าไม่มี ฉันก็คิดจะลองทำเอง
    ถึงอย่างนั้นการรวม Python ของ VSCode ก็ถือว่าทำได้ค่อนข้างดี

    • มีอยู่ 2 แนวทาง
      1. รัน Emacs บนเครื่องโลคัลแล้วแก้ไขไฟล์ระยะไกลผ่าน Tramp
      2. รัน Emacs บนเซิร์ฟเวอร์ระยะไกลในโหมดเทอร์มินัล (-nw)