3 điểm bởi GN⁺ 2025-06-26 | 1 bình luận | Chia sẻ qua WhatsApp
  • Microsoft Edit là trình soạn thảo dành cho các nhu cầu chỉnh sửa đơn giản, bày tỏ sự tri ân với classic MS-DOS Editor, đồng thời cung cấp giao diện hiện đại và cách điều khiển nhập liệu tương tự VS Code
  • Mục tiêu là cung cấp một trình soạn thảo có tính tiếp cận cao mà ngay cả người dùng không quen với terminal cũng có thể sử dụng dễ dàng
  • Có thể cài đặt bằng WinGet trên Windows, Homebrew trên macOS, và bằng script cài đặt trên Linux nếu bản phân phối không có binary hoặc nếu muốn tự build
  • Được build bằng Rust; cấu hình nightly Rust được khuyến nghị vì giúp giảm đáng kể kích thước binary và cải thiện hiệu năng đôi chút
  • Các trình quản lý gói được khuyến nghị dùng tên msedit thay vì edit do khả năng xung đột tên file thực thi; cấu hình thư viện ICU ảnh hưởng đến chức năng tìm kiếm/thay thế

Mục đích và tính chất của Microsoft Edit

  • Edit là một trình soạn thảo đơn giản với mục tiêu “simple editor for simple needs”
  • Vừa bày tỏ sự tri ân với classic MS-DOS Editor, vừa cung cấp giao diện hiện đại và cách điều khiển nhập liệu tương tự VS Code
  • Hướng tới một trình soạn thảo dễ tiếp cận mà ngay cả người dùng không quen với terminal cũng có thể sử dụng dễ dàng

Cách cài đặt

  • Có thể tải binary từ Releases page
  • Windows

    • Phiên bản mới nhất có thể cài bằng WinGet
    winget install Microsoft.Edit
    
  • Linux

    • Nếu bản phân phối không cung cấp binary hoặc muốn tự build, có thể dùng script cài đặt
    • Yêu cầu gồm Rust, trình biên dịch C, ICU, curl hoặc wget, và tar
    • Cài đặt mặc định sẽ cài msedit vào ~/.local/bin
    curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/microsoft/edit/… | sh
    
    • Với các flag bổ sung, --dev sẽ build trực tiếp từ nhánh main, còn --system sẽ cài vào /usr/local/bin
    curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/microsoft/edit/… | sh -s -- --dev --system
    
  • macOS

    • Phiên bản mới nhất có thể cài bằng Homebrew
    brew install msedit
    

Cách build

  • Việc build cần cài đặt Rust và clone repository
  • Nếu dùng nightly Rust, build release bằng lệnh sau
    cargo build --release --config .cargo/release.toml
    
  • Nếu dùng stable Rust, nên thiết lập biến môi trường RUSTC_BOOTSTRAP=1 và làm theo hướng dẫn build nightly
    • Cách này giúp giảm đáng kể kích thước binary và cải thiện hiệu năng đôi chút
  • Để build bằng stable Rust mà không có cấu hình riêng, dùng lệnh sau
    cargo build --release
    

Tùy chọn cấu hình build

  • Có thể điều chỉnh cấu hình bằng biến môi trường khi build
  • EDIT_CFG_ICU* liên quan đến cấu hình tên thư viện ICU; các trình quản lý gói Linux được khuyến nghị xem xét tùy chọn này
  • EDIT_CFG_LANGUAGES chỉ định bằng dấu phẩy danh sách ngôn ngữ sẽ được đưa vào bản build

Lưu ý dành cho trình quản lý gói

  • Tên file thực thi tiêu chuẩn là edit, và tên thay thế là msedit
  • Vì tên edit có thể xung đột với các lệnh hiện có, nên tên gói và tên file thực thi được khuyến nghị là msedit
  • Nên tránh các tên như ms-edit
  • Nếu có thể, nên gán alias edit

Cấu hình liên quan đến ICU

  • Dự án này phụ thuộc tùy chọn vào thư viện ICU cho chức năng tìm kiếm và thay thế
  • Theo mặc định, dự án tìm tên thư viện ICU theo từng nền tảng
    • Windows: icuuc.dll, icuin.dll
    • macOS: libicucore.dylib
    • Linux và các hệ khác: libicuuc.so, libicui18n.so
  • Nếu SONAME của môi trường cài đặt khác, cần thiết lập biến môi trường khi build
    • EDIT_CFG_ICUUC_SONAME: ví dụ libicuuc.so.76
    • EDIT_CFG_ICUI18N_SONAME: ví dụ libicui18n.so.76
  • Theo mặc định, giả định rằng các symbol ICU được export ở dạng như u_errorName, không có tiền tố _ và không có hậu tố phiên bản
  • Trong môi trường dùng dạng symbol khác, có thể dùng các biến môi trường bổ sung
    • EDIT_CFG_ICU_CPP_EXPORTS=true: tìm các symbol C++ như _u_errorName; trên macOS được bật mặc định
    • EDIT_CFG_ICU_RENAMING_VERSION=76: tìm các symbol như u_errorName_76
  • Nếu thiết lập EDIT_CFG_ICU_RENAMING_AUTO_DETECT=true, file thực thi sẽ cố gắng phát hiện giá trị renaming version khi chạy
    • Cách này không được ICU hỗ trợ chính thức, vì vậy được khuyến nghị không phụ thuộc vào nó
    • Trên UNIX, ngoại trừ macOS, tùy chọn này được bật mặc định khi không còn lựa chọn nào khác
  • Kiểm thử cấu hình build được chạy bằng cách thêm flag --ignored vào cargo test
    cargo test -- --ignored
    

1 bình luận

 
GN⁺ 2025-06-26
Ý kiến Hacker News
  • Bài này được quan tâm đến mức được đăng lên ba lần trong một tuần

    1. Chính tác giả - https://news.ycombinator.com/item?id=44034961
    2. Ubuntu Publication - https://news.ycombinator.com/item?id=44306892
      Và lần này nữa
  • Trước đây tôi thường giới thiệu micro cho nhóm người dùng mà trình soạn thảo này nhắm tới, giờ tự hỏi có nên đổi khuyến nghị hay không

    1: https://micro-editor.github.io/

    • Có vẻ không cần phải đổi
      Ít nhất khi dùng thử ngay thì edit còn không hỗ trợ tô sáng cú pháp theo mặc định
    • Lần cuối tôi kiểm tra, nếu nhìn vào kích thước nhị phân thì micro phải gọi là macro mới đúng
    • Còn có dte nữa. Đây là một trình soạn thảo cực nhẹ, nhắm chính xác cùng phân khúc nhưng có nhiều tính năng hơn như hỗ trợ Unicode, key binding CUA, v.v.
      Tôi đang dùng nó làm trình soạn thảo terminal thay cho nano
      [1]: https://craigbarnes.gitlab.io/dte/
    • Micro là một trình soạn thảo tuyệt vời để thay thế những thứ kiểu nano. Nhưng có lẽ không phù hợp để thay thế edit, vì edit rất cơ bản còn micro thì mở rộng được khá nhiều bằng Lua
      Nó cũng xử lý file lớn khá tốt
    • Trên Windows cũng có thể cài chỉ bằng "winget install zyedidia.micro". Nó gợi nhớ đến các trình soạn thảo 8-bit và 16-bit cùng thời đó
  • Tôi thật sự tò mò một dự án như thế này được phê duyệt ra sao trong một tổ chức cỡ Microsoft. Không rõ đây là side project của vài lập trình viên hay là một phần của roadmap sản phẩm
    Họ đã thuyết phục ban lãnh đạo dành thời gian cho việc này bằng cách nào?

    • Theo phần mô tả, họ cần một trình soạn thảo văn bản dòng lệnh chạy được trên bản cài đặt Windows Core server
      Windows đã tích hợp SSH Server khá lâu rồi, nên có thể quản trị hoàn toàn chỉ qua SSH, và vì thế cần một trình soạn thảo không có mode mà các quản trị viên Windows không có kinh nghiệm với vi vẫn dùng được
    • Trình soạn thảo văn bản là mục tiêu quá tự nhiên để tích hợp Copilot
    • Mỗi nhóm đều phải làm gì đó và đưa ra ý tưởng. Đôi khi nó xuất phát từ định hướng của lãnh đạo như “hãy dùng Copilot”, đôi khi thì một ý tưởng từ các sự kiện kiểu hackerdayz được mở rộng thêm
      Cũng có khi nhân sự kỹ thuật trong các tổ chức nghiên cứu có chút dư địa để tự khởi xướng, hoặc sau quá trình phân tích sâu và qua nhiều quý thì mới được cấp vốn
      Nhìn vào số lượng người đóng góp ở đây, dự án này có lẽ là một khoản đầu tư chiến lược. Không phải thứ xuất hiện chỉ sau một đêm
  • Bản edit.com gốc của DOS 6.22 và sau đó là 7.0, tức thời Win95, là IDE đầu tiên của tôi. Tôi bắt đầu với qbasic, quen với giao diện giống hệt hoặc rất tương tự, và khi học C/C++ bằng djgpp tôi vẫn tiếp tục dùng edit.com
    “File dự án” của tôi là e.bat chứa edit file1.cpp file2.cpp file3.cpp, và tôi dùng nó vì nó có hỗ trợ nhiều file khá ổn, có thể chuyển nhanh bằng Alt-1,2,3. Đến giờ tôi vẫn remap key binding của editor để chuyển file bằng Alt/Cmd-1,2,3, và cố giữ “tập đang hoạt động” ở vài file đầu cho gọn
    Nó không có tô sáng cú pháp và cách xử lý thụt lề cũng không thật sự tốt, nên không phải một code editor xuất sắc. Vì thế ở giai đoạn đầu sự nghiệp tôi dùng kiểu thụt lề hai dấu cách, dễ gõ tay mà không giống tab. Dù vậy, cảm giác chạm trực tiếp vào code vẫn rất rõ
    Tôi biết nhiều người dùng các editor như qedit, nhưng kỳ lạ là tôi không hợp với chúng, còn các editor kiểu Unix thì trên DOS lại thấy rất gượng
    Dùng thử một chút thì có vẻ nó có hỗ trợ nhiều buffer, nhưng dường như không thể chuyển buffer bằng cùng các key binding đó

    • Nên mở issue cho chuyện đó. Những thứ như vậy nếu được đưa vào sớm thì có khả năng sẽ được tiếp thu
      Và không chỉ là tương tự đâu, mà đúng nghĩa là y hệt. EDIT.COM đơn giản chỉ khởi chạy QBASIC với một cờ đặc biệt, và bạn cũng có thể tự chạy QBASIC trực tiếp với cờ đó. Như đã nói ở https://news.ycombinator.com/item?id=44037509, tôi thực sự đã thử làm vậy cho vui
    • Nó không có tô sáng cú pháp, nhưng nếu phải gọi theo cách nào đó cho dễ hiểu thì nó có viết hoa cú pháp
      Nếu bạn nhập cả dòng bằng chữ thường rồi nhấn Enter, nó sẽ tự động đổi các từ khóa dành riêng sang chữ hoa. Không phải thứ gì ghê gớm, nhưng cũng hữu ích
    • Sau thời copy con, edit đúng là vị cứu tinh
  • Có rất nhiều điều để thích ở đây. Trước hết, danh sách phụ thuộc trống rỗng, như vậy thôi đã đủ thuyết phục tôi rồi
    Nó hoạt động rất tốt. Tôi không thể tin là họ đã tự xây nguyên một TUI cho việc này, còn có cả trình duyệt file và hộp thoại nữa. Tôi muốn dùng nó cho dự án của mình, nhưng không biết sẽ dễ đến mức nào. Nếu có ai liên quan đến dự án ở đây, tôi cũng muốn hỏi vì sao họ không dùng Ratatui
    Chất lượng code cũng ở mức đỉnh cao, và tôi chỉ có thể nói một câu: Bravo!

    • Nếu bỏ qua một vài phụ thuộc phục vụ phát triển để giúp việc kiểm thử dễ hơn, thì đúng là không có phụ thuộc nào
      Với một thứ được phân phối như công cụ mặc định cho quản trị viên trên các hệ điều hành như Windows, đó là lựa chọn hợp lý. Muốn biết thêm bối cảnh về chuyện “tự xây”, hãy xem câu trả lời của lhecker
      [1]: https://news.ycombinator.com/threads?id=lhecker
  • Khoảng một tháng trước, tôi có nghe nói Microsoft có hẳn một bản phân phối Linux riêng để người dùng Windows cảm thấy quen thuộc hơn. Theo tôi nhớ thì đó là một cấu hình GNOME khá đơn giản nên không có gì đặc biệt
    Tôi thấy khá bất ngờ là Microsoft đã không tận dụng cơ hội tạo ra một bản phân phối Linux dành riêng cho mình, với PowerShell thay cho bash, có thêm Edit cùng các lựa chọn như vim·nano, và trong bản cài đặt cho nhà phát triển thì bao gồm .NET và Visual Studio Code
    Họ cũng có thể lấy đó làm bản cài WSL mặc định. Có lẽ nó sẽ không thắng được trong cuộc cạnh tranh với các bản phân phối điển hình như Ubuntu hay Debian, nhưng vì người dùng Windows rất đông nên vẫn có thể giành được một tỷ lệ nhất định và trở thành lựa chọn phổ biến
    Microsoft không thể kiểm soát kernel Linux, nhưng có thể chi phối không gian người dùng. Cũng đáng để hình dung xem điều gì sẽ xảy ra nếu họ tạo được xu hướng cài sẵn các ứng dụng của mình trên những bản phân phối phổ biến
    Microsoft Edit cũng có thể dùng trên Linux, giống như PowerShell vậy. Nếu họ đi đúng nước cờ từ khoảng 10 năm trước, thì nhờ rất nhiều người dùng Windows dùng nó qua WSL, bản phân phối của họ hiện có thể đã nằm trong top 5
    Các tập đoàn lớn có thể đẩy dấu ấn của mình vào không gian cá nhân của người dùng. Giờ chỉ cần Microsoft Edit bật sẵn Co-Pilot theo mặc định nữa là xong

    • Tôi nghĩ theo thời gian, khả năng cao là Microsoft sẽ chuyển sang Linux. Ít nhất là ở mảng Windows Server và Windows nhúng, rồi sau đó Windows desktop cũng có thể dần thay đổi hoặc tách thành các lựa chọn như Windows Legacy và Windows “Linux Workstation”
      Có thể họ sẽ đặt một kiểu WINE “siêu cấp” lên trên kernel Linux, rồi với một số chương trình nhất định sẽ cung cấp Windows cổ điển chạy trong máy ảo như một phương án dự phòng nhưng được tích hợp rất chặt chẽ
      Tuy vậy, vấn đề là kernel NT có khá nhiều điểm tốt hơn kernel Linux về mặt thiết kế. Ví dụ, kernel NT có thể phục hồi ngay cả khi driver GPU chết hẳn, còn Linux có vẻ xử lý tình huống như vậy khá vất vả. Các driver khác cũng tương tự
      Nhưng Windows đang dần trở thành gánh nặng hơn là tài sản đối với Microsoft, đặc biệt là trong mảng máy chủ. Nguồn doanh thu chủ lực là Azure và Office 365, và cả hai vẫn đang tăng trưởng hai chữ số, trong khi tăng trưởng giấy phép Windows thì đình trệ
      Ít nhất thì tôi nghĩ sẽ có những phiên bản như Windows Server dựa trên Linux và Windows Workstation dựa trên Linux
    • Lý do WSL tồn tại là vì các nhà phát triển trong doanh nghiệp cần một cách để chạy Linux
      Nhân viên phụ trách hỗ trợ CNTT và hỗ trợ kỹ thuật thường không rành Linux và cũng không muốn hỗ trợ nó. WSL giải quyết vấn đề này
      Phần lớn lập trình viên thực ra không muốn dùng Linux bản thân nó. Nhiều người thậm chí cũng không thực sự biết dùng terminal và phụ thuộc vào các công cụ GUI
    • Nếu ngạc nhiên vì Microsoft không làm bản phân phối Linux riêng, thì lần thử gần nhất của họ đã không thành công lắm. Nó tên là Xenix
    • Tôi nghĩ độ nhận diện tên tuổi có ích. Lập trình viên không muốn cài một bản phân phối mà họ chưa từng nghe tên, nhưng lại muốn cài Ubuntu
      Nếu WSL hỗ trợ Ubuntu thì có thể tận dụng được độ nhận diện đó
    • Có vẻ bạn đang nhầm giữa bản phân phối Linux bên thứ nhất của Microsoft là Azure Linux (trước đây là CBL-Mariner) và các lớp skin môi trường desktop Linux trông giống Windows mà người ta đã làm từ rất lâu
      Azure Linux là hệ điều hành do Microsoft hỗ trợ để dùng cho container, VM, server, v.v.
  • Cái này trông giống kiểu dự án làm ra chỉ vì “muốn thử xem sao”. Tôi cũng hiểu điều đó vì bản thân từng làm nhiều thứ như vậy để hiểu chuyện gì đang diễn ra
    Nhưng việc viết lại Turbo Vision bằng FPC và biên dịch cho nhiều đích đến khác nhau thì đã có từ 20 năm trước rồi. Turbo Vision có lẽ là thư viện cửa sổ chế độ văn bản tốt nhất từng tồn tại
    Phần thú vị bắt đầu khi bạn có thể ánh xạ toàn bộ màn hình văn bản vào một mảng như thế này:
    var
    Screen: Array[1..80,1..25] Of Byte Absolute $B800; // or something like that as i recall
    Điều Turbo Vision mang lại là các cửa sổ modal/non-modal có thể di chuyển được. Về cơ bản nó là cấu trúc cứ ghi lại liên tục vào cái mảng đó trong một vòng lặp, và chạy khá nhanh. Tôi đã kiếm được rất nhiều tiền với thư viện đó

    • Cho ai quan tâm, có một bản port Turbo Vision hiện đại bằng C++ cũng hỗ trợ Unicode:
      https://github.com/magiblot/tvision
    • Đây không phải là dự án làm chỉ vì “muốn thử xem sao”. Người ta cần một trình soạn thảo TUI nhỏ, được tích hợp trong Windows và cũng chạy được qua SSH
      https://news.ycombinator.com/item?id=44034961
    • Chính xác hơn thì là array[1..25, 1..80] of Word absolute $B800:0000
      Mảng của TP được sắp xếp theo thứ tự hàng trước, và mỗi ký tự được biểu diễn bằng hai byte. Một byte là chính ký tự đó, byte còn lại là thuộc tính (màu tiền cảnh/nền và nhấp nháy)
      Vì vậy viết tốt hơn sẽ là array[1..25, 1..80] of packed record ch: char; attr: byte end absolute $B800:0000
      Với màn hình văn bản đơn sắc như Hercules (mode 7), chỉ cần đổi $B800 thành $B000
    • Tôi tò mò không biết bạn đã kiếm tiền với Turbo Vision như thế nào. Nếu được thì mong bạn chia sẻ
    • Mỗi lần nhìn thấy một framework TUI hiện đại mới, tôi lại có cùng một nỗi thất vọng. “À, cái này không tốt bằng Turbo Vision
  • Giờ tôi đang chờ một bản EDLIN có hỗ trợ Unicode
    Tôi nhớ là ngày trước có thể pipe các phím bấm vào từ stdin trong file batch để script hóa một số thao tác chỉnh sửa. Nó giống như thay thế cho một phần chức năng của sed hay awk
    Tôi chưa thử, nhưng có lẽ cũng làm được với vi. Còn việc đó có phải là một cách làm cực kỳ bị nguyền rủa hay không thì lại là chuyện khác

    • Có lẽ thứ bạn đang tìm là ed. Tùy trường hợp có thể dùng cùng -s
  • Khá thú vị. Thành thật mà nói tôi cũng không rõ nó được làm ra để ai dùng, nhưng trông khá vui

    • Đây là thứ dành cho những người muốn chỉnh sửa tệp trong Windows Terminal. Lệnh edit ngày xưa đã không còn được hỗ trợ trên Windows từ sau năm 2006, nên từ đó về sau không có trình soạn thảo nào do Microsoft cung cấp có thể dùng trên dòng lệnh.
      Tốc độ của trình soạn thảo này gây ấn tượng mạnh. https://github.com/microsoft/edit/pull/408

      Nếu viết một routine SIMD chuyên biệt cho việc tìm ký tự xuống dòng thì có thể đẩy lên [tới 125GB/s]

    • README đã ghi ngay ở đó:

      Mục tiêu là cung cấp một trình soạn thảo dễ tiếp cận mà ngay cả người dùng hầu như không quen với terminal cũng có thể dễ dàng sử dụng

    • Đây là một cải tiến lớn hơn nhiều so với Notepad
    • Nếu có hoặc sau này có hỗ trợ LSP hay tìm kiếm dựa trên ripgrep thì tôi sẵn sàng dùng nó thay vim.
      Hiện giờ tôi đang dùng Helix, nhưng tôi thích một TUI tốt
    • Đây là thứ dành cho những người như tôi, ghét vi và đang tìm một thứ tỉnh táo hơn để thay nano trong terminal
  • Năm 1993, tôi từng mở tệp nhị phân bằng edit và thích thú khi thấy hình trái tim

    • Trải nghiệm đó, phần trực quan hóa của DOS defrag, và việc tự tay chỉnh sửa hex các tệp lưu game gần như chính là lý do khiến tôi trở thành lập trình viên ngày nay