IDEmacs: Bộ cấu hình dùng Emacs như Visual Studio Code
(codeberg.org)- 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 Lisp và Scheme (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
- Chỉnh sửa:
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)
- Ví dụ:
- 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
- Emacs 29 trở lên,
- Phụ thuộc tùy chọn
grep,locatehoặcplocate
- Quy trình cài đặt
- Clone kho lưu trữ
git clone https://codeberg.org/IDEmacs/IDEmacs - 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
- Clone kho lưu trữ
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
Ý 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
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
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
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
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
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”
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
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
Đơ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
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
Nó chạy trên curses/SDL2 và kế thừa phong cách Emacs
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
Đ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
Đ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
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
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