Vi clone viết bằng ngôn ngữ BASIC: Khi những thói quen cũ khó bỏ

Công nghệ08 tháng 5, 2026·4 phút đọc

Vài trăm dòng code ngôn ngữ BASIC đã tái tạo đủ các tính năng để duy trì phản xạ soạn thảo theo kiểu modal. Dự án độc đáo của lập trình viên Lee Tusman là một cách tôn vinh thú vị dành cho trình soạn thảo Vi huyền thoại nhân dịp sinh nhật lần thứ 50 của nó.

Vi clone viết bằng ngôn ngữ BASIC: Khi những thói quen cũ khó bỏ

Trình soạn thảo văn bản kì cựu Vi kỷ niệm sinh nhật lần thứ 50 vào năm nay, và có lẽ cách tốt nhất để kỷ niệm sự kiện này là viết lại một phiên bản của nó bằng ngôn ngữ BASIC? Dù nghe có vẻ lạ lẫm, nhưng đây chính là ý tưởng của Lee Tusman, một người thích đi ngược lại những xu hướng công nghệ nhất thời.

Mã nguồn cho dự án này được viết trên Yabasic, một trình thông dịch BASIC mã nguồn mở dành cho các hệ điều hành Unix và Windows. Không phải là một lập trình viên chuyên nghiệp, Tusman xuất thân là một nghệ sĩ và bắt đầu tìm hiểu BASIC vào năm 2025.

Đam mê với BASIC và các dự án nhỏ

Đối với Tusman, việc sử dụng một phiên bản BASIC hiện đại là khá thú vị. Ông chia sẻ rằng mình đã tự tạo ra một trò chơi đua ngựa cyber (cyber-hoss racing), một game dòng lệnh lấy cảm hứng từ UFO50 và Flash game Quibble Race. Ngoài ra, ông còn mày mò với phiên bản văn bản của trò chơi kinh điển The Oregon Trail và xây dựng một bản sao đơn giản của game mô phỏng kinh tế Dope Wars.

Tất cả những dự án nhỏ đó đã dẫn Tusman đến ý tưởng viết một phiên bản của trình soạn thảo Vi sử dụng BASIC, đơn giản vì nó có sẵn và đáng thử.

Thử thách tái tạo Vim

Tusman cho biết ông đã sử dụng Neovim (và trước đó là Vim) trong nhiều năm liền. Dù chưa bao giờ tạo ra một trình soạn thảo văn bản nào, ông quyết định rằng việc tự viết cho mình một bản sẽ rất thú vị. Cảm hứng đến từ các công cụ như Offpunk (một trình duyệt dựa trên văn bản), ông tự hỏi: "Mình có thể xây dựng một trình soạn thảo ULTRA đơn giản với tối thiểu các lệnh của Vim được không? Chắc nó không quá khó đâu?".

Trong trường hợp này, nó thực sự không quá khó. Tusman chỉ mất vài trăm dòng code Yabasic để tạo ra một trang trắng tối thiểu hoạt động được trước khi bắt đầu thêm các lệnh đơn giản. Không lâu sau, trình soạn thảo đã có thể mở tệp, tạo tệp mới và lưu lại.

Tusman bày tỏ sự hài lòng: "Thật thú vị khi giờ đây tôi có thể mở chính mã nguồn của chương trình vi.bas để nghía ngó và chỉnh sửa nó."

Tính năng và những thiếu sót

Trong phiên bản editor này của Tusman, không có tính năng tự động xuống dòng — giới hạn là 80 ký tự. Tuy nhiên, nếu bạn lấy mã từ kho lưu trữ GitHub và chạy nó, bạn sẽ thấy một bản mô phỏng khá giống với trình soạn thảo uy tín, cùng với nhiều phím tắt bí ẩn đặc trưng của nó.

Khi được The Register hỏi lý do chọn Vi, Tusman đáp: "Tôi chọn Vi vì tôi đã dùng nó, và tất nhiên, một khi đã bị nghiện, bạn sẽ khó mà muốn dùng kiểu editor nào khác."

Vậy còn thiếu sót gì? "Rất nhiều thứ! Nhưng tôi cố ý không cố gắng xây dựng lại một Vim hoàn chỉnh. Tôi chỉ muốn một thứ dùng được với nhiều chức năng nhất có thể trong một chương trình ngắn gọn và đơn giản nhất. Đáng chú ý, hầu hết code chỉ là 'nếu nhấn phím này thì làm việc kia'."

Tương lai và mã nguồn

Về việc phát triển trong tương lai, Tusman nói rằng chưa biết sẽ thêm bao nhiêu tính năng. Ông mới chỉ dùng chương trình này khoảng một tuần nhưng chưa thấy thiếu hụt gì quá nhiều so với Neovim. Ông dự đoán có thể sẽ thêm lại số dòng tùy chọn, và vẫn chưa tìm ra cách ngăn chặn lỗi khi thay đổi kích thước màn hình hoạt động đa nền tảng.

Tusman lưu ý rằng dù mã nguồn có thể không giành được giải thưởng về vẻ đẹp, nhưng nó hoạt động tốt và có thể tùy biến. Dự án được công bố vào phạm vi công cộng (public domain), nên bất kỳ lập trình viên BASIC nào cũng có thể fork và thêm các tính năng mình cần.

Nhìn vào mã nguồn chắc chắn sẽ gợi lên nhiều kỷ niệm cho những ai từng mày mò với TI BASIC vào đầu những năm 1980 hoặc đã từng cài đặt Visual BASIC 6. Một cách hài hước, Tusman kết luận: "Không chỉ là bản clone Vi tốt nhất tôi từng thấy viết bằng một triển khai BASIC, tôi nghĩ nó là bản duy nhất!"

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗