Tôi chỉ muốn làm Emacs trông đẹp hơn — sử dụng màu 24-bit trong terminal
- Cộng đồng Emacs rất sôi động và cung cấp các tính năng tự động hoàn thành hiện đại cùng kiểm tra kiểu nội tuyến thông qua LSP.
- Trong môi trường đồ họa, Emacs tự động hỗ trợ màu 24-bit, nhưng trong terminal thì không như vậy.
Mã escape ANSI
- Các terminal phần cứng đời đầu cung cấp các mã điều khiển không tương thích với nhau, và ANSI đã chuẩn hóa chúng.
- Thông qua SGR (Select Graphics Rendition), có thể thiết lập nhiều thuộc tính hiển thị ký tự khác nhau.
Màu 3-, 4-, 8-bit
- Khi màu sắc được giới thiệu, ban đầu có 8 màu cơ bản, sau này bổ sung thêm các màu sáng để thành tổng cộng 16 màu.
- Năm 1999, Todd Larason đã thêm bản vá hỗ trợ 256 màu cho xterm.
Hỗ trợ màu 24-bit đến từ đâu?
- Cách gửi màu 8-bit và 24-bit đến các terminal tương thích đã được tài liệu hóa khá đầy đủ.
- Trong quá trình chuẩn hóa ANSI những năm 70 và sau đó là ISO 8613-6 (ITU T.416) vào những năm 90, 38 và 48 được định nghĩa là các chế độ màu tiền cảnh và nền mở rộng.
Terminfo
- Terminfo cung cấp cơ sở dữ liệu về các tính năng của terminal, và biến môi trường TERM cho chương trình biết nên dùng bản ghi terminfo nào.
xterm-256color và xterm-direct lần lượt hỗ trợ 256 màu và màu RGB.
Thiết lập TERM: vấn đề dấu chấm phẩy
- Vì nhiều terminal chỉ hỗ trợ cú pháp dùng dấu chấm phẩy, nên cần bảo đảm TERM được thiết lập đúng.
Cấu hình Emacs
- Emacs có tài liệu về cách phát hiện hỗ trợ truecolor.
RGB là tính năng màu mặc định của Emacs, và nó sẽ tìm chuỗi setf24 và setb24 trước.
Terminal lồng nhau
- Quy trình làm việc phổ biến là sử dụng nhiều lớp terminal lồng nhau.
- Tất cả các lớp đều phải hiểu màu 24-bit và chuyển đổi chính xác.
Trình giả lập terminal đồ họa
- Hầu hết terminal đều đặt TERM thành giá trị mặc định hợp lý hoặc cho phép ghi đè.
ssh
ssh truyền giá trị TERM tới máy chủ từ xa.
tmux
- Bên trong
tmux, cần đặt TERM như tmux-direct.
Ý kiến của GN⁺
- Điểm quan trọng nhất của bài viết này là nhu cầu của người dùng muốn sử dụng màu sắc chất lượng cao ngay cả trong môi trường terminal, cùng với những tiến bộ kỹ thuật giúp điều đó trở thành hiện thực.
- Hỗ trợ màu 24-bit là một tính năng quan trọng giúp các nhà phát triển mang lại trải nghiệm người dùng tốt hơn, đặc biệt cải thiện đáng kể sự tiện lợi về mặt thị giác trong các công cụ như trình biên tập mã.
- Bài viết này sẽ thú vị và hữu ích với người dùng terminal và Emacs, đồng thời cung cấp thông tin hữu ích cho những ai theo đuổi trải nghiệm hình ảnh xuất sắc ngay cả trong môi trường làm việc dựa trên terminal.
1 bình luận
Ý kiến trên Hacker News
Bày tỏ sự ngạc nhiên trước độ phức tạp của các ứng dụng terminal, đồng thời gửi lời cảm ơn tới các nhà phát triển ứng dụng terminal như iTerm và Kitty.
Cá nhân cho rằng việc chỉnh bảng màu 16 màu cho từng ứng dụng terminal dễ hơn là căn chỉnh chính xác mã terminal ở phía ứng dụng.
.Xdefaultsvà tệp giao diện tùy chỉnh.el.lscũng trở nên tốt hơn.Phỏng đoán rằng tác giả hẳn đã có trải nghiệm tốt hơn nếu biết
export COLORTERM=truecolor.Nhấn mạnh rằng khi dùng Emacs thì không nhất thiết phải dùng terminal, mà có thể dùng frontend “đồ họa” cho MacOS, Windows, X.org hoặc Wayland.
Chỉ ra rằng điện toán có thể đã đi lạc hướng khi các hệ thống sản xuất vẫn dùng terminal emulator, trình soạn thảo và phiên bản hệ điều hành từ thập niên 1970.
Đùa rằng muốn dùng Cool Retro Term để làm Emacs trông ngầu hơn.
Phát hiện rằng trong Command Prompt của Windows 10, các chuỗi escape ANSI tiêu chuẩn hoạt động và màu 24-bit cũng chạy tốt.
Nói rằng điểm tuyệt nhất của Emacs so với vim/neovim là hỗ trợ GUI được xem như công dân hạng nhất.
Nói rằng mình sẽ không dùng tính năng này vì cấu hình Emacs chỉ dùng màu ở mức tối thiểu, nhưng vẫn thấy bài viết rất thú vị khi đọc.
Phê phán rằng thật đáng xấu hổ khi các tiêu chuẩn bị khóa sau mức giá cao, khiến mọi người phải đi đường vòng như vậy thay vì chỉ cần mua chúng.