3 điểm bởi GN⁺ 2025-06-26 | 1 bình luận | Chia sẻ qua WhatsApp
  • Microsoft Edittrình soạn thảo văn bản đơn giản lấy cảm hứng tri ân từ MS-DOS Editor cổ điển
  • 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 phát triển là mang đến môi trường chỉnh sửa dễ tiếp cận ngay cả với người dùng không quen terminal
  • Có phụ thuộc tùy chọn vào thư viện ICU cho tính năng Search and Replace
  • Bao gồm hướng dẫn về cách đặt tên tệp thực thi rõ ràng và các tùy chọn biến môi trường dành cho trình quản lý gói

Tổng quan dự án mã nguồn mở

  • Microsoft Edit là trình soạn thảo văn bản theo phong cách editor cổ điển cho các tác vụ đơn giản
  • Điểm nổi bật là diễn giải hiện đại của MS-DOS Editor, đồng thời áp dụng UI và phương thức nhập liệu quen thuộc theo phong cách VS Code
  • Được thiết kế đặc biệt với trọng tâm là sự đơn giản để ngay cả người dùng ít kinh nghiệm với terminal cũng có thể dùng dễ dàng

Đặc điểm và tính năng

  • Giữ mức độ phức tạp tối thiểu nhưng vẫn cho phép thực hiện thuận tiện các tác vụ chỉnh sửa văn bản cơ bản
  • Giao diện mang lại cảm giác quen thuộc, chú trọng khả năng tiếp cận và tính dễ sử dụng
  • Phụ thuộc tùy chọn vào thư viện ICU (International Components for Unicode) để hỗ trợ tính năng Search and Replace

Lưu ý dành cho package manager và người phụ trách đóng gói

Đặt tên gói

  • Tên tệp thực thi mặc định là "edit", tên thay thế là "msedit"
  • Do khả năng xung đột với lệnh hệ thống hiện có là "edit", nên khuyến nghị dùng tên thay thế như "msedit"
  • Khuyến nghị tránh các tên như "ms-edit"

Đặt tên thư viện ICU (SONAME)

  • Có thể sử dụng thư viện ICU cho tính năng Search and Replace
  • Các thư viện được tìm mặc định theo từng hệ điều hành như sau
    • Windows: icuuc.dll
    • macOS: libicuuc.dylib
    • UNIX và các hệ khác: libicuuc.so
  • Nếu tên thư viện (SONAME) khác tùy theo môi trường hệ thống, có thể cấu hình bằng các biến môi trường như EDIT_CFG_ICUUC_SONAME, EDIT_CFG_ICUI18N_SONAME
  • Có thêm các biến môi trường dành cho trường hợp quy ước đặt tên ICU export symbol khác nhau

Khác

  • Có thêm các tùy chọn như tự động phát hiện việc đổi tên ICU, hỗ trợ symbol C++
  • Có thể kiểm tra các thiết lập này bằng lệnh cargo test -- --ignored

Kết luận

  • trình soạn thảo mã nguồn mở đề cao sự đơn giản và khả năng tiếp cận, đồng thời vẫn cho phép cấu hình môi trường linh hoạt
  • Cung cấp hướng dẫn rõ ràng và khả năng tương thích cao cho nhà phát triển, người đóng góp mã nguồn mở và trình quản lý gói

1 bình luận

 
GN⁺ 2025-06-26
Ý kiến trên Hacker News
  • Đây chỉ là câu chuyện về một dự án được làm đơn giản vì “tôi muốn làm”, và tôi cũng nhớ mình từng có rất nhiều trải nghiệm kiểu tự làm ra thứ gì đó như vậy để hiểu nguyên lý hoạt động bên trong. Nhưng một phiên bản viết lại Turbo Vision bằng FPC và biên dịch hỗ trợ nhiều mục tiêu đã có từ khoảng 20 năm trước rồi. Tôi nghĩ Turbo Vision là thư viện cửa sổ chế độ văn bản hay nhất. Phần thật sự thú vị bắt đầu từ chỗ ánh xạ toàn bộ màn hình văn bản thành một mảng. var Screen: Array[1..80,1..25] Of Byte Absolute $B800 Tôi nhớ đại khái là như vậy. Điều thật sự mang tính cách mạng của Turbo Vision là các cửa sổ modal và không modal có thể di chuyển được. Tức là rốt cuộc chỉ là chạy vòng lặp qua mảng đó và liên tục ghi lại. Nó khá nhanh. Tôi cũng nhớ mình từng kiếm được kha khá tiền với thư viện đó

    • Với ai tò mò thì hiện nay có phiên bản C++ Turbo Vision hiện đại, cùng một bản port hỗ trợ cả Unicode https://github.com/magiblot/tvision

    • Mảng của TP được tổ chức theo row-major. Mỗi ký tự gồm 2 byte (chữ + thuộc tính). Vì vậy thậm chí còn có sự tiện lợi kiểu 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 thì chỉ cần đổi $B800 thành $B000. Ví dụ như môi trường Hercules

    • Sẽ rất tuyệt nếu trong VSCode có một giao diện kiểu đó chạy được trong terminal, thậm chí cả từ xa

    • Tôi tò mò không biết bạn đã kiếm tiền bằng thư viện đó như thế nào. Mong được chia sẻ bí quyết

    • Mỗi lần nhìn các framework TUI mới ra gần đây, tôi luôn nghĩ, “chúng vẫn không bằng Turbo Vision”

  • Mặt khác, họ đang cố nhét những thứ cồng kềnh không cần thiết như AI Copilot vào Notepad. Theo tôi nhớ, cốt lõi của Notepad vốn là làm đúng một việc và không có tính năng thừa

    • Edit mới này cũng không hoàn toàn thoát khỏi kiểu quyết định đó. Thời Satya, MS tỏ ra như thể họ thích FOSS, nhưng tôi nhớ thời Gates/Balmer thân thiện với lập trình viên Windows hơn nhiều. Bây giờ framework web và desktop bị trộn lẫn, đến mức ngay nội bộ cũng chẳng dùng tốt. Thay vì các wizard hay plugin của VS ngày xưa, giờ lại đi dump file Excel bằng công cụ CLI. Điều đó cho thấy rất rõ khoảng cách thế hệ trong văn hóa phát triển Windows và sự thiếu hụt bí quyết ở cấp quản lý

    • Raymond Chen từng nói Notepad được dùng cho nhiều bài kiểm thử hơn người ta tưởng. Nó là một công cụ đơn giản nhưng lại thường xuyên được dùng để thử nghiệm https://devblogs.microsoft.com/oldnewthing/20180521-00/?p=98795

    • Tôi đã thử dán ảnh chụp màn hình vào Paint mới trên Windows 11, và ngay cả khi đang thu nhỏ nó vẫn liên tục dùng 5% CPU và chiếm khoảng 250MB bộ nhớ. RAM thì còn tạm chấp nhận, nhưng lãng phí CPU như vậy thì thật khó chấp nhận. Tôi nhớ ngày xưa vẫn còn có lòng tự hào nghề nghiệp và kiểm soát chất lượng

    • Khi ISP gặp sự cố gián đoạn (vấn đề IPv4/MTU), thậm chí Notepad cũng không lưu được. Chỉ khi ép tắt mới xong. Lúc đó tôi đang tạm cấu hình đường vòng qua Wireguard

    • Nếu xóa notepad hiện đại đi, thì tìm notepad cũ trong Start Menu cũng không ra

  • Tôi nhớ khoảng một tháng trước có nghe chuyện MS phát hành một bản phân phối Linux thân thiện hơn với người dùng Windows. Theo trí nhớ của tôi thì nó chỉ là một môi trường GNOME đơn giản, không có gì đặc biệt. Tôi lại thấy rằng nếu MS đã làm bản phân phối Linux riêng, họ hoàn toàn có thể thay bash bằng powershell, thay Edit cho vim/nano, và kèm luôn .NET hay Visual Studio Code làm công cụ phát triển mặc định... Nếu MS dùng nó làm bản phân phối mặc định cho WSL thì dù không thắng cả cuộc chiến, ít nhất họ cũng có thể tăng thị phần người dùng. Dù MS không chi phối được kernel, họ vẫn có thể thống trị userland. Rất nhiều người dùng Windows sẽ tự nhiên dùng các công cụ của MS vì chúng là ứng dụng cài sẵn mặc định. Giờ thì Microsoft Edit cũng dùng được trên Linux. Powershell và các ứng dụng khác cũng vậy. Nếu chiến lược này được triển khai từ 10 năm trước, tôi có thể tưởng tượng hôm nay một bản phân phối của MS trong WSL đã lọt top 5. Cũng hơi khó chịu khi các tập đoàn lớn như M$ có thể vươn ảnh hưởng tới cả PC cá nhân của tôi. Cuối cùng tôi lại hình dung đến ngày Microsoft Edit sẽ được tích hợp Co-Pilot mặc định

    • Tôi nghĩ rồi sẽ có lúc MS ít nhất dần chuyển một số mảng như Windows Server hay Windows nhúng sang Linux. Về dài hạn, cả desktop Windows cũng sẽ thay đổi dần và xuất hiện lựa chọn kiểu ‘Windows Legacy’ vs ‘Windows Linux Workstation’. Tôi đoán nó sẽ tiến hóa thành kernel Linux + WINE được tinh chỉnh + một VM tích hợp cho phần legacy. Vấn đề là về mặt thiết kế, kernel NT có nhiều điểm đi trước Linux (ví dụ có thể phục hồi sau khi toàn bộ driver GPU bị treo). Nhưng bản thân Windows đang dần trở thành gánh nặng hơn là tài sản. Thực tế động lực tăng trưởng của MS là Azure & Office 365, còn giấy phép Windows gần như giậm chân tại chỗ. Ít nhất có thể kỳ vọng một Windows Server và workstation dựa trên Linux

    • Azure Linux (trước đây là CBL-Mariner) là bản phân phối Linux chính thức của MS dành cho container, VM và máy chủ. Cần phân biệt nó với kiểu desktop hay giao diện được “bọc da” cho người dùng Windows thông thường

    • Tôi nhớ bản phân phối Linux mà MS từng làm trước đây có tên là “Xenix”, nhưng kết quả không mấy tốt đẹp

    • Bối cảnh ra đời của WSL là các lập trình viên trong doanh nghiệp lớn rất cần môi trường Linux. Phía hỗ trợ IT thì không rành Linux, mà cũng chẳng muốn hỗ trợ. WSL giải quyết đúng vấn đề đó. Trên thực tế nhiều lập trình viên không thật sự muốn dùng Linux và cũng không quen terminal. Họ phụ thuộc vào công cụ GUI

    • Ý tưởng MS âm thầm duy trì một bản phân phối riêng chỉ để thỏa mãn cảm xúc của người dùng Windows có vẻ khá phi thực tế

  • Chủ đề này nóng đến mức chỉ trong một tuần đã được đăng lên 3 lần

    1. Bài đăng của tác giả - https://news.ycombinator.com/item?id=44034961
    2. Bài đăng chính thức của Ubuntu - https://news.ycombinator.com/item?id=44306892
    3. Và bài đăng lần này
  • edit.com ban đầu (từ DOS 6.22, sau đó là 7.0/Windows 95) là IDE đầu tiên của tôi. Khởi đầu là qbasic, và nó gần như cùng một chương trình với edit.com. Khi học C/C++ bằng djgpp tôi vẫn tiếp tục dùng edit.com. “Tệp dự án” của tôi là e.bat, có thể mở nhiều tệp cùng lúc kiểu edit file1.cpp file2.cpp.... Các trình soạn thảo khác chuyển qua lại giữa nhiều tệp khá bất tiện, nhưng ở đây chỉ cần alt-1,2,3... là chuyển ngay, điều đó làm tôi rất thích. Đến giờ khi đổi phím tắt editor, tôi vẫn luôn cố giữ lại phong cách này. Dù vậy, xét như một code editor thì nó khá tệ. Không có syntax highlighting, hỗ trợ thụt lề cũng kém (nên lúc đầu tôi dùng thụt lề hai dấu cách vì làm tay cũng tiện). Nhưng phản hồi tức thì với đoạn mã đang viết và cảm giác quen thuộc thì thật tuyệt vời. Có những editor như qedit, nhưng không hợp gu tôi; còn các editor kiểu Unix thì theo tôi không hợp với DOS. Editor mới lần này có hỗ trợ multi-buffer, nhưng có vẻ không áp dụng kiểu key binding mà tôi quen

    • Nên mở issue về việc này. Những phản hồi như vậy nếu được đưa ra sớm thì thường có khả năng được phản ánh vào sản phẩm thật. Và thực sự thì không chỉ là “na ná”, edit.com đúng nghĩa là qbasic được khởi động với thêm một cờ. Tôi từng trực tiếp chạy qbasic với cờ đó để dùng https://news.ycombinator.com/item?id=44037509

    • Không có syntax highlighting, nhưng có tính năng viết hoa cú pháp (ví dụ tự động chuyển từ khóa thành chữ hoa). Chẳng hạn bạn nhập cả dòng bằng chữ thường, rồi nhấn Enter thì các từ khóa sẽ tự đổi thành chữ hoa. Không phải gì to tát nhưng khá tiện

    • So với thời copy con thì edit đúng là cứu tinh

  • Có rất nhiều điểm tôi thích ở dự án này. Trước hết là danh sách phụ thuộc gọn gàng, không phụ thuộc gì cả! Tôi hoàn toàn bị chinh phục. Không thể tin nổi họ đã tự xây cả TUI chỉ cho riêng editor này. Có cả hộp thoại và trình duyệt tệp. Tôi muốn thử áp dụng cho dự án của mình. Nếu có ai liên quan ở đây, tôi rất muốn biết vì sao họ không dùng Ratatui. Chất lượng mã quá xuất sắc. Tóm lại: Bravo!

  • Trước đây tôi thường giới thiệu micro[1] cho những ai tìm một text editor kiểu này. Giờ thì tôi phân vân nên giới thiệu gì

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

    • Theo tôi thì không cần đổi gợi ý. edit hiện tại, ít nhất theo những gì tôi thử, còn không hỗ trợ syntax highlighting

    • Lần cuối tôi kiểm tra thì kích thước file nhị phân của micro lớn đến mức nên gọi là macro hơn là micro

    • Cũng có lựa chọn là dte[1]. Nó hỗ trợ Unicode, key binding kiểu CUA và vừa rất đơn giản vừa mạnh mẽ. Tôi đang hài lòng khi dùng nó như editor terminal thay thế nano https://craigbarnes.gitlab.io/dte/

    • Trên Windows, chỉ cần winget install zyedidia.micro là cài được. Nó mang cảm giác editor thời 8-bit/16-bit ngày xưa

  • Tôi thật sự tò mò trong một tổ chức lớn như MS thì những dự án như thế này được phê duyệt ra sao. Đây chỉ là side project của một lập trình viên, là một phần của roadmap sản phẩm, hay đã phải trải qua quá trình thuyết phục ban lãnh đạo?

    • Text editor là mục tiêu rất phù hợp cho chiến lược tích hợp copilot

    • Như phần giải thích lý do có nói, họ cần một editor chạy được trên dòng lệnh (cho cài đặt Windows Core Server), cũng cần dùng được qua SSH (vài năm nay Windows đã tích hợp sẵn SSH server), và cần một editor không modal cho quản trị viên Windows không có kinh nghiệm với vi. Những nhu cầu đó đã dẫn đến dự án lần này

    • Mỗi nhóm đôi khi phải nghĩ ra ý tưởng để đáp ứng chỉ tiêu, có lúc là theo chỉ đạo từ cấp trên (chẳng hạn dùng copilot), hoặc bắt đầu từ các sự kiện như hackathon rồi mở rộng dần. Trong tổ chức nghiên cứu, nếu nhân sự kỹ thuật tạm rảnh tay thì những thứ như vậy cũng có thể xuất hiện, hoặc sau một thời gian phân tích dài thì cuối cùng mới được cấp ngân sách. Chỉ nhìn số lượng committer cũng thấy đây là một khoản đầu tư khá chiến lược. Không phải dự án một sớm một chiều mà ra

  • Tôi mong một ngày EDLIN cũ cũng trở lại với hỗ trợ Unicode. EDLIN cho phép đưa chuỗi phím vào qua pipe từ file batch để tự động hóa một số tác vụ nhất định. Nó giống như một dạng thay thế cho một phần của sed hay awk. Tôi nghĩ vi cũng có kiến trúc hơi tương tự, còn chuyện nó “dị” đến mức nào thì lại là vấn đề khác

    • Có lẽ thứ bạn đang tìm là ed. Thêm tùy chọn -s thì rất hợp để viết script
  • Thảo luận liên quan (271 điểm, 185 bình luận) https://news.ycombinator.com/item?id=44031529