- Cú pháp Org Mode được giới thiệu là một ngôn ngữ đánh dấu nhẹ trực quan và nhất quán có thể dùng cả ngoài Emacs
- Cú pháp cơ bản như tiêu đề, danh sách, định dạng, liên kết có cấu trúc đơn giản và dễ nhớ, đồng thời có độ nhất quán trong biểu đạt cao hơn các ngôn ngữ khác
- Khác với nhiều biến thể khác nhau của Markdown, Org Mode duy trì một dạng tương đối chuẩn hóa xoay quanh một triển khai duy nhất (Emacs Org-mode)
- Có thể chuyển đổi bằng nhiều công cụ như Pandoc, và ngay cả khi không dùng Emacs vẫn có thể soạn thảo dễ dàng trong trình soạn thảo văn bản thông thường
- Ngay cả trong số các ngôn ngữ đánh dấu nhẹ, nó nổi bật về tính dễ đọc, khả năng bảo trì và hỗ trợ công cụ, và được nhấn mạnh như một phương án thay thế cho việc viết tài liệu dựa trên văn bản thuần
Tổng quan về cú pháp Org Mode
- Cú pháp Org Mode không phụ thuộc vào Emacs và có thể dùng trong vim, Atom, Notepad, v.v. trên mọi trình soạn thảo văn bản
- Tiêu đề biểu diễn phân cấp bằng
*, **, ** *
- Định dạng văn bản dùng các dạng
*bold*, /italic/, _underlined_, +strikethrough+, =monospaced=
- Liên kết đơn giản với cú pháp
[[URL][mô tả]]
- Cũng hỗ trợ danh sách (
-, 1.), hộp kiểm ([ ], [X]), khối mã (#+BEGIN_SRC ... #+END_SRC) v.v.
- Bảng (table) thì khó căn chỉnh thủ công, nhưng ngay cả khi bỏ qua việc căn lề thì cú pháp vẫn được nhận diện
- Người dùng có thể tự nhiên nắm được cú pháp mà không cần bảng ghi nhớ riêng
Tính chuẩn hóa và vấn đề của Markdown
- Markdown gây ra vấn đề tương thích do có nhiều chuẩn phái sinh (Original, Extra, MultiMarkdown, GitHub Flavored, CommonMark, v.v.)
- Dù cùng là “Markdown”, cú pháp vẫn khác nhau tùy công cụ, dẫn đến mất dữ liệu và giảm tính tiện dụng
- Org Mode có toàn bộ cú pháp được định nghĩa dựa trên một triển khai duy nhất là Emacs Org-mode, nên có thể diễn giải nhất quán
- Các công cụ phái sinh hoạt động dưới dạng tập con (subset) của bản gốc
- Phần mở rộng tệp luôn được thống nhất là
.org
- Dù không có tài liệu tiêu chuẩn chính thức, triển khai Emacs đóng vai trò là tiêu chuẩn thực tế (golden standard)
So sánh về tính nhất quán và khả năng sử dụng
- Cú pháp tiêu đề: Org Mode chỉ dùng tiền tố
* để biểu diễn phân cấp một cách đơn giản
- Trong khi Markdown, AsciiDoc, reStructuredText, v.v. có cấu trúc phức tạp và thiếu đồng nhất như tiền tố, hậu tố hoặc gạch dưới
- Một số ngôn ngữ còn cho phép trộn kiểu, làm tăng thêm sự rối rắm
- Cú pháp liên kết:
[[URL][văn bản]] của Org Mode tuy đơn giản, nhưng
[văn bản](URL) của Markdown hay `văn bản <URL>`_ của reStructuredText lại có tổ hợp ký hiệu phức tạp và thiếu nhất quán
- Cú pháp định dạng: Org Mode dùng
/italic/, *bold*, ~monospace~, +strikethrough+ với cấu trúc cặp ký hiệu nhất quán
- Markdown dùng
_italic_, **bold**, ~~strike~~ v.v. với số lượng ký hiệu và quy tắc không đồng đều
Sự thuận tiện khi nhập liệu và tính độc lập với công cụ
- Org Mode có ít ký tự thừa phải nhập, không yêu cầu căn chỉnh thủ công hay cú pháp phức tạp
- Ngay cả ngoài Emacs, văn bản viết bằng cú pháp Org Mode vẫn có thể được chuyển đổi qua Pandoc sang nhiều định dạng như HTML, PDF, Word
- GitHub, GitLab cũng có thể render tệp Org, và nó vẫn hiệu quả cả trong môi trường soạn thảo văn bản đơn giản
- Bài viết nhấn mạnh rằng “càng ở trong môi trường thiếu hỗ trợ công cụ, cú pháp Org Mode càng hữu ích”
Hỗ trợ công cụ trong Emacs
- Trong Emacs, khi viết bằng Org Mode có thể thao tác cấu trúc bằng TAB, Alt+mũi tên, Ctrl+Return v.v.
- Hỗ trợ tự động cho việc gập/mở tiêu đề, di chuyển danh sách, di chuyển hàng/cột trong bảng v.v.
- Cũng có thể tiếp cận theo kiểu dùng menu, và ngay cả không cần học phím tắt vẫn có thể viết hiệu quả
- Dù không bắt buộc phải dùng Emacs, nếu dùng thì nó mang lại trải nghiệm chỉnh sửa ngôn ngữ đánh dấu mạnh mẽ nhất
- Markdown, AsciiDoc, reStructuredText v.v. không có mức hỗ trợ công cụ tương đương
Kết luận và đề xuất Orgdown
- Mục tiêu của ngôn ngữ đánh dấu nhẹ là sự ngắn gọn và hiệu quả, và Org Mode có thiết kế hợp lý nhất ở điểm này
- Markdown, AsciiDoc, reStructuredText v.v. có tính sử dụng thấp hơn do thiếu nhất quán và cú pháp phức tạp
- Org Mode có đường cong học tập thấp, độc lập với công cụ và khả năng tương thích chuyển đổi cao
- Sau năm 2021, từ các thảo luận như vậy đã xuất hiện một nỗ lực chuẩn hóa mới mang tên Orgdown
- Được giới thiệu là một dự án chuẩn hóa ngôn ngữ đánh dấu nhẹ độc lập dựa trên cú pháp Org Mode
Thảo luận bổ sung và phản hồi
- Một số người dùng chỉ ra sự thiếu vắng tiêu chuẩn chính thức của Org Mode
- Có tồn tại khác biệt trong cách diễn giải giữa Emacs và Pandoc, nhưng triển khai Emacs vẫn được xem là chuẩn thực tế
- Cũng có phản hồi về chức năng tham chiếu liên kết của reStructuredText, nhưng
- Tác giả vẫn đánh giá Org Mode là ngôn ngữ đánh dấu nhẹ logic và dễ nhớ nhất
- Kết luận lại, Org Mode được đưa ra như một phương án thay thế hợp lý cho việc soạn tài liệu văn bản thuần vượt ra ngoài hệ sinh thái Emacs
1 bình luận
Ý kiến trên Hacker News
Giờ tôi dùng org-mode cho mọi dự án, tác vụ và quản lý tri thức. Có file còn vượt quá 15MB
Ban đầu tôi chỉ dùng các tiêu đề đơn giản, nhưng mỗi khi cần thì tính năng cần thiết đều đã có sẵn. Tôi nghĩ hiếm có công cụ nào vừa dễ dùng vừa có khả năng mở rộng mạnh mẽ như vậy
Nếu có tính năng nâng cao nào đáng học sâu hơn thì tôi rất muốn được gợi ý
Nó có thể dùng cho quản lý thông tin cá nhân (PIM), soạn tài liệu, ghi chú, phím tắt tự động hóa, v.v.
Thay vì chỉ dùng như một định dạng thay thế Markdown, nó thực sự tỏa sáng trong hệ sinh thái Emacs
Bài viết của Karl Voit cho rằng cú pháp org nhất quán và gọn hơn Markdown
Trong thế giới công nghệ, định dạng tốt hơn không phải lúc nào cũng thắng, nhưng tôi vẫn nghĩ đáng để tiếp tục ủng hộ
Bài viết liên quan cũng nhấn mạnh điểm đó
Trước đây tôi dùng XML nhưng quá rườm rà nên đã đổi. Tôi tạo HTML và PDF bằng quy trình làm việc dựa trên Pandoc
Gần đây tôi dùng Typst để tạo PDF nhanh hơn.
Tôi đã làm dự án xml2typ để tạo PDF nhanh hơn rất nhiều so với Pandoc/LaTeX
test.mdorg có thể hợp nhất bookmark, PKM và quản lý việc cần làm
Nhưng trong thời đại AI, Markdown đang trở thành định dạng mặc định để huấn luyện LLM
Dù vậy LLM cũng xử lý org rất tốt, nên cả hai vẫn có chỗ để cùng tồn tại
Xem bài đề xuất liên quan
Đáng tiếc là nó không được mã nguồn mở. Đây là ví dụ cho thấy giới hạn của dự án do một người phát triển duy nhất (SPOF)
Nhờ Beorg cho iOS nên tôi cũng dùng rất tốt trên di động
Tôi đã tăng năng suất với org-ql, org-super-agenda
Tôi ghi lại nhật ký công việc hằng ngày bằng file org, và điều đó cực kỳ hữu ích khi đánh giá cuối năm
Nó đồng bộ bookmark và tab với file org để có thể quản lý như TODO
Tôi tò mò bạn tổ chức liên kết giữa các file như thế nào. Tôi cũng đang cân nhắc
denoteVì vậy những thứ phức tạp tôi cứ viết trực tiếp bằng HTML hay LaTeX gốc
Bản thân chương trình org-mode thì tuyệt vời, nhưng nếu chỉ nhìn riêng cú pháp thì Markdown thực dụng hơn
Khi tôi chuyển blog từ org sang Markdown, mã ngắn gọn hơn và tốc độ nhanh hơn 50 lần
Tôi tạo một trình dựng trang web dựa trên Bash bằng dự án shite, và chèn trực tiếp các khối HTML vào trong org
Tính năng
org-edit-special, cho phép chỉ chỉnh sửa phần HTML, cực kỳ hữu ích#+BEGIN_SRC html) thì còn có thể highlight theo từng ngôn ngữTạo phím tắt bằng
yasnippetthì rất tiệnTừ năm 2009 tôi đã viết mọi tài liệu Beamer bằng org
Tôi cũng đã thêm hỗ trợ org cho blog Pelican bằng plugin Python
org là một ý tưởng tuyệt vời nhưng vấn đề là thiếu tính tương thích. Markdown được hỗ trợ ở khắp nơi nên là lựa chọn thực tế hơn
Dù org-mode có hợp lý đến đâu, dùng Markdown làm mặc định vẫn là lựa chọn thực tế hơn vì tính phổ biến
Đây không chỉ là so sánh định dạng đơn thuần mà là hai công cụ có cách vận hành hoàn toàn khác nhau
Markdown chỉ có cấu trúc, còn Org bao gồm trạng thái và logic thực thi
Vì thế tranh luận về “lựa chọn mặc định” là vô nghĩa. Mỗi thứ phù hợp với một mục đích khác nhau
Không có lý do gì để bảo người đang dùng org-mode phải bỏ nó cả
Heading bằng dấu sao của org trông hơi rối mắt. Dù vậy tôi lại thích cách viết in nghiêng của nó
Mỗi implementation lại khác nhau, còn các tính năng như bảng hay chú thích cuối trang cũng tồn tại riêng dưới dạng extension
Ưu điểm duy nhất của nó là tính phổ quát
Nó ít tính năng hơn nhưng đơn giản và dễ phân tích cú pháp. Liên kết bắt đầu bằng
=>, và việc tách đoạn cũng rất rõ ràngTrình phân tích của tôi chỉ khoảng 70 dòng mà đã bao phủ được 95% tính năng của Markdown
Tuy vậy, việc coi xuống dòng là phân tách đoạn văn thì hơi bất tiện.
Dùng xuống dòng kép để tách đoạn như Pandoc Markdown sẽ tốt hơn
Tôi viết giáo trình trực tuyến bằng org-mode và mỗi học kỳ lại xuất ra HTML
Tôi tự động hóa việc mở rộng văn bản, đánh giá elisp, v.v. bằng macro
Ví dụ, {{{NOUN-C}}} sẽ đổi thành “Clause” hoặc “Rule” tùy ngữ cảnh
Ngày tháng ở đầu trang cũng được tạo tự động bằng elisp.
Tôi dùng dịch vụ hosting site44.com tích hợp với Dropbox nên chỉ cần lưu là nội dung lên web ngay
Vì thế gần như không có công cụ nào khác hỗ trợ tốt. Trong khi đó CommonMark đã được chuẩn hóa
Tôi sẽ tiếp tục dùng CommonMark
Việc các trang như Reddit chọn Markdown thực ra lại là một quyết định tốt
Có nhiều giải pháp mã nguồn mở mạnh về đồng bộ cục bộ hơn Markdown
Các ứng dụng ghi chú dựa trên Markdown lại thường phụ thuộc vào đám mây hơn