Microsoft Edit
(github.com/microsoft)- 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
mseditthay vìeditdo 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
mseditvào~/.local/bin
curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/microsoft/edit/… | sh- Với các flag bổ sung,
--devsẽ build trực tiếp từ nhánh main, còn--systemsẽ 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=1và 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àyEDIT_CFG_LANGUAGESchỉ định bằng dấu phẩy danh sách ngôn ngữ sẽ được đưa vào bản build- Các ngôn ngữ khả dụng nằm trong i18n/edit.toml
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
editcó 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
- Windows:
- 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.76EDIT_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 địnhEDIT_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
--ignoredvàocargo testcargo test -- --ignored
1 bình luận
Ý 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
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/
Ít nhất khi dùng thử ngay thì
editcòn không hỗ trợ tô sáng cú pháp theo mặc địnhTôi đang dùng nó làm trình soạn thảo terminal thay cho nano
[1]: https://craigbarnes.gitlab.io/dte/
Nó cũng xử lý file lớn khá tốt
"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?
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
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.batchứaedit 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ọnNó 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ượngDù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 đó
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ế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
copy con, edit đúng là vị cứu tinhCó 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!
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
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
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 WSL hỗ trợ Ubuntu thì có thể tận dụng được độ nhận diện đó
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:
varScreen: 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 đó
https://github.com/magiblot/tvision
https://news.ycombinator.com/item?id=44034961
array[1..25, 1..80] of Word absolute $B800:0000Mả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:0000Với màn hình văn bản đơn sắc như Hercules (mode 7), chỉ cần đổi
$B800thành$B000Giờ 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
-sKhá 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
editngà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
Hiện giờ tôi đang dùng Helix, nhưng tôi thích một TUI tốt
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