1 điểm bởi GN⁺ 2025-11-17 | 1 bình luận | Chia sẻ qua WhatsApp
  • Cấu hình môi trường Emacs như một IDE phổ biến để cả người mới bắt đầu cũng có thể dùng ngay
  • Tái hiện các tính năng chính như giao diện VSCode, trình khám phá, tab, đa con trỏ, tự động hoàn thành trong Emacs
  • Hỗ trợ GUI và thao tác chuột theo mặc định, có thể cấu hình qua giao diện custom
  • Cung cấp môi trường chỉnh sửa hoàn chỉnh cho lập trình viên Lisp (Sly/Geiser) và cả người không lập trình
  • Hạ thấp rào cản tiếp cận Emacs, tạo ra điểm khởi đầu giúp người dùng mới dễ thích nghi

Tổng quan về IDEmacs

  • IDEmacs là một bộ cấu hình giúp Emacs có thể được dùng như một GUI IDE kiểu Visual Studio Code hoặc Sublime Text
    • Vẫn giữ được sức mạnh của Emacs nhưng cung cấp giao diện quen thuộc hơn cho người mới
  • Đối tượng chính gồm ba nhóm sau
    • Lập trình viên chuyển từ IDE khác sang hoặc người mới học lập trình
    • Người mới bắt đầu với Common LispScheme (bao gồm Sly/Geiser và tính năng chỉnh sửa có cấu trúc)
    • Người không lập trình muốn biên tập tài liệu Org, Markdown, LaTeX
  • Mục tiêu là giảm rào cản tiếp cận bằng cách cung cấp một môi trường dùng được ngay cho những ai thấy trải nghiệm Emacs mặc định còn xa lạ

Tính năng chính

  • Hỗ trợ GUI và chuột
    • Không ẩn các thành phần GUI như đa số starter kit khác
    • Hỗ trợ cấu hình qua GUI custom (không cần tự chỉnh Elisp trực tiếp)
  • Keybinding kiểu IDE
    • Dựa trên chế độ CUA để tái hiện rộng rãi các phím tắt thường dùng trong VSCode và các IDE tương tự
    • Khác với Spacemacs hay Doom dùng chế độ Evil, cách thao tác ở đây thiên về GUI
  • Mức độ hoàn chỉnh như một bản phân phối Emacs đầy đủ
    • Nhanh và không cần cấu hình thêm
    • Gồm mã Elisp có chú thích phong phú nên cũng có thể dùng làm tài liệu học tập
  • Mục tiêu không phải sao chép hoàn hảo mà là mang lại trải nghiệm “đủ tương tự”

Cấu hình VSCode (đang trong quá trình thực hiện)

  • Hiện là cấu hình IDE duy nhất được cung cấp
  • Thành phần bao gồm
    • Giao diện VSCode Dark Plus
    • Trình khám phá tệp bên thanh bên Treemacs
    • Thanh tab Centaur Tabs
    • Hiển thị đường dẫn tệp kiểu breadcrumb
    • idle-highlight-mode để tự động tô sáng symbol
    • Đã triển khai phần lớn phím tắt thuộc các nhóm “General”, “Basic Editing”, “Rich Languages Editing”, “Multi-cursor” của VSCode
  • Các gói chính
    • Chỉnh sửa: whole-line-or-region, expand-region, multiple-cursors, smartparens
    • Quản lý phiên bản: vc, magit, diff-hl, blamer
    • Tự động hoàn thành: Vertico, orderless, Consult, marginalia, company
    • Phát triển Lisp: sly, geiser, adjust-parens
    • Khác: eat (terminal), org-superstar, pdf-tools, undo-tree, helpful, rainbow-mode
    • Phần tổ chức mã được quản lý bằng use-package

Cấu hình keybinding

  • Ánh xạ phím tắt của VSCode sang các lệnh Emacs
    • Ví dụ:
      • C-S-p → command palette (execute-extended-command)
      • C-p → mở tệp (consult-locate)
      • C-S-n → cửa sổ mới (make-frame)
      • C-w → đóng cửa sổ (idemacs-kill-buffer-noprompt)
      • C-, → cài đặt người dùng (customize)
  • Xác định các lệnh tương ứng theo từng nhóm chi tiết như chỉnh sửa cơ bản, đa con trỏ, điều hướng, quản lý tệp, điều khiển hiển thị
  • Một số phím tắt vẫn có khác biệt về hành vi so với VSCode và được đánh dấu TODO

Tham gia và đóng góp

  • Kêu gọi người dùng dùng thử IDEmacs rồi gửi phản hồi
    • Quan sát người mới sử dụng, chia sẻ ý kiến qua Jabber/XMPP hoặc issue tracker
  • Với nhà phát triển, dự án khuyến khích tham gia cải thiện mã và mở rộng tính năng

Dự án liên quan

  • Mousemacs (GitHub: seamus-brady/mousemacs)
    • Một bản phân phối giúp Emacs hoạt động như Sublime Text hoặc VSCode
    • Được tạo ra để học Lisp và cung cấp giao diện thân thiện với chuột
    • Giữ nguyên mọi tính năng của Emacs cùng với một giao diện đơn giản

Cài đặt và chạy

  • Phụ thuộc bắt buộc
    • Emacs 29 trở lên, git, font DejaVu Sans Mono
  • Phụ thuộc tùy chọn
    • grep, locate hoặc plocate
  • Quy trình cài đặt
    1. Clone kho lưu trữ
      git clone https://codeberg.org/IDEmacs/IDEmacs
      
    2. Chạy Emacs khi có kết nối Internet
      emacs --init-directory=/path/to/IDEmacs/vscode
      
    • Khi chạy, Emacs sẽ tự động tải các package cần thiết

Khác

  • Hiện ngoài cấu hình VSCode thì chưa có kiểu IDE nào khác
  • Có nhắc đến khả năng triển khai GUI mới trong tương lai nếu nguồn lực cho phép
  • Không có thêm thông tin nào trong nguyên văn

1 bình luận

 
GN⁺ 2025-11-17
Ý kiến Hacker News
  • Những ai cho rằng VSCode dễ dùng cần nhìn lại thực tế
    Khi mở lần đầu, nó tạo cảm giác quá tải với popup, sidebar, tooltip, v.v.
    Tôi cũng là người dùng Emacs, nhưng không hề cho rằng Emacs trực quan
    Chỉ là VSCode cũng không phải công cụ dễ như phép màu, nó đơn giản chỉ là lựa chọn phổ biến

    • UX của VSCode khá quen thuộc
      Cây thư mục, trình soạn thảo, terminal, tự động hoàn thành tab và cài extension là gần như toàn bộ phạm vi tương tác của đa số người dùng
      Nếu không có sẵn mặc định hoặc không thể thêm dễ dàng bằng extension thì phần lớn mọi người sẽ không dùng
    • Các công cụ chuyên dụng như IDE, DAW, trình biên tập video, v.v. về bản chất khó tránh khỏi độ phức tạp
      Nhưng mức độ phức tạp của VSCode không thể đem so với vim hay Emacs
      Chỉ cần một hướng dẫn ngắn hoặc khoảng 30 phút mày mò là có thể quen được
      Trong khi đó neovim thì tôi phải cần hẳn một cuốn sách
    • Tôi cũng dùng Emacs hằng ngày nhưng VSCode vẫn cho cảm giác gắt và thô
      Gần đây tôi thử RustRover, nhưng chỉ dùng thao tác bấm chuột thì khó mà tạo được cấu hình như mình muốn
      Điều đó khiến tôi cảm thấy cái gọi là “dễ dùng” của IDE đôi khi là một ảo tưởng
    • Từ góc nhìn của người đã dùng Emacs một năm rồi bỏ, tôi nghĩ khả năng tương tác liên thông (interoperability) quan trọng hơn nhiều
      Có rất nhiều công cụ hỗ trợ những giao diện phổ biến như bộ chọn tệp chuẩn hoặc phím tắt CUA
      Vì vậy tôi dùng các lựa chọn thay thế như Zim-wiki thay cho Emacs và thấy hài lòng hơn
    • Về ý kiến cho rằng popup và sidebar của VSCode gây nặng nề, nếu từng dùng các IDE nặng như Eclipse thì ngược lại có thể sẽ thấy quen
      Còn nếu bạn chủ yếu làm việc với tmux, vi, nano, emacs thì có thể sẽ thấy bối rối
  • Emacs không chỉ là một IDE đơn thuần mà là công cụ chứa đựng triết lý và tự do
    Có nhiều dự án tập trung vào các trường hợp sử dụng xoay quanh lập trình, nhưng trong VSCode cũng có thể tái hiện khoảng 75% bằng keybinding Emacs
    Cốt lõi của Emacs là đưa cho bạn một “hộp linh kiện” để tự lắp ráp
    Nó giống như “một vũ khí tao nhã của thời đại văn minh”

    • Tuy vậy, Emacs Lisp khó có thể xem là một ngôn ngữ hàm
      Phần lớn cấu trúc dữ liệu đều có thể thay đổi, và có nhiều hàm mang tính mệnh lệnh như setq
  • Tôi nghi ngờ việc bố cục cửa sổ cố định trong Emacs có thực sự hoạt động tốt không
    Hồi trước khi thử, panel Treemacs đôi lúc lại hiển thị buffer mã thay vì trình xem tệp

  • Gần đây việc thiết lập Emacs thành IDE đã dễ hơn rất nhiều
    Nhờ eglot tích hợp sẵn, lượng mã elisp cần viết ít hơn hẳn trước đây, và cấu hình Python cũng chỉ cần một dòng
    Vì thế các dự án như thế này có lẽ gần với vai trò cổng vào cho người mới hơn là dành cho người dùng cũ như tôi

    • 15 năm trước khi còn ở trường, tôi cũng đã dùng Emacs khá mượt
      Tích hợp OCaml REPL, trình giả lập 68000 và gdb đều làm được mà không cần cấu hình nhiều
      Sau đó tôi chuyển sang vim vì môi trường máy chủ từ xa, nhưng gần đây khi thử lại Emacs thì thấy quản lý gói đã tinh tế hơn nhiều
      Dù vậy, tooling liên quan đến DevOps/SRE vẫn còn thiếu
  • Tôi thích các dự án gói ghép package như Spacemacs và Doom
    Dù không trực tiếp dùng, chúng giúp tôi có cơ hội khám phá package mới và có cớ để chỉnh lại cấu hình

    • Tôi cũng xem qua các package trên trang idemacs, và cái tên 'minimap' đặc biệt để lại ấn tượng
      Đơn giản nhưng rất đúng mục đích nên khiến tôi phải mỉm cười
  • Tôi ước gì có một dự án xây lại UI của Emacs theo hướng hiện đại
    Giữ nguyên phần lõi nhưng có giao diện trực quan hơn, phân biệt rõ ràng hơn và đỡ mỏi mắt hơn
    Tôi cũng thích tính năng ở các trình soạn thảo Lisp cũ, nơi khi nhấn Ctrl thì hiện hướng dẫn phím tắt

    • Tôi lại có quan điểm ngược lại
      UI vẫn ổn, còn kiến trúc đơn luồng và tình trạng hay khựng mới là vấn đề cấp bách hơn
      Cần cải thiện thực tế là mỗi ngày tôi vẫn phải nhấn C-g ít nhất một lần
    • Dù không hoàn toàn giống, có thể tham khảo Lem viết bằng Common Lisp
      Nó chạy trên curses/SDL2 và kế thừa phong cách Emacs
    • Có lẽ bạn đang nói đến which-key
      Trước đây nó là package ngoài, nhưng gần đây đã được tích hợp vào Emacs chính thức
      Liên kết commit liên quan
    • Tôi muốn giữ UI hiện tại nhiều nhất có thể
      Điểm mạnh lớn là nó hoạt động với cùng một diện mạo cả trong môi trường đồ họa lẫn terminal
      Tôi đặc biệt thích việc Treemacs trông giống nhau ở mọi nơi
  • Thật tiếc khi OniVim v2 đã không thành công
    Nó là một IDE native nhưng vẫn hỗ trợ đầy đủ hệ thống plugin của VSCode
    Liên kết lưu trữ OniVim v2

    • OniVim đã tách các chức năng cốt lõi của vim thành một thư viện riêng tên là libvim
      Điều này hẳn cũng sẽ hữu ích cho các nhà phát triển frontend GUI khác
      Neovim giao tiếp bằng RPC, nhưng hiệu năng vẫn đủ nhanh
      Plugin Neovim cho VSCode cũng nhờ cấu trúc này mà mang lại trải nghiệm vim hoàn chỉnh
    • Tuy vậy, nhóm người dùng mục tiêu lại khá mơ hồ
      Người dùng Vim sẽ không thích độ trễ nhập liệu của Electron và EULA, còn người dùng VSCode thì không quan tâm đến Vim
  • Tôi đã dùng Emacs hơn 25 năm, và việc đầu tiên khi cài mới luôn là tắt các thành phần GUI
    Tôi hoàn toàn không dùng menu hay toolbar

    • Người dùng VSCode đặc biệt hay làm việc theo kiểu lấy chuột làm trung tâm, nhưng điểm mạnh của Emacs là bạn có thể chỉnh sửa cỗ máy Lisp theo bất kỳ cách nào mình muốn
    • Tôi cũng đã dùng Emacs hơn 15 năm và thao tác hoàn toàn bằng bàn phím
      Nhưng giáo sư hướng dẫn của tôi lại dùng Emacs mặc định với chuột để làm LaTeX, và đó là một trải nghiệm khá mới mẻ
  • Tôi sẽ tiếp tục dùng Doom Emacs, nhưng vẫn hoan nghênh những thử nghiệm như thế này
    Emacs có nhiều plugin UI mang tính đổi mới như Vertico, nhưng trải nghiệm mặc định vẫn còn thiếu
    Nếu những dự án như vậy có thể khiến Emacs dễ tiếp cận hơn với nhiều người thì đó là điều tốt

  • Tôi đã dùng Emacs hơn 15 năm, và mong muốn duy nhất của tôi là một chế độ client-server cho phép chỉnh sửa từ xa giống như VSCode
    Sẽ rất tuyệt nếu có giải pháp hoạt động tốt cả trong môi trường độ trễ cao
    Nếu không có thì tôi định tự làm lấy
    Dù vậy, tích hợp Python của VSCode vẫn khá ổn

    • Có hai cách tiếp cận
      1. Chạy Emacs cục bộ và chỉnh sửa tệp từ xa bằng Tramp
      2. Chạy Emacs trên máy chủ từ xa ở chế độ terminal (-nw)