it-swarm-vi.com

Làm cách nào để tạo màu hiển thị Vim như được chỉ định bởi mã màu?

Nói tóm lại, tôi đang cố gắng thay thế less bằng vim (vimpager). Tôi có các cài đặt cho tập lệnh để nhổ màu sắc (và đậm và mọi thứ Đẹp) bất cứ khi nào chúng có thể. less hiểu mã màu và hiển thị chúng độc đáo. Làm cách nào tôi có thể tạo vim phân tích mã và hiển thị màu sắc/độ đậm theo cách less không?

62
phunehehe

Hai câu trả lời:

Một đoạn ngắn: bạn muốn sử dụng tập lệnh vim AnsiEsc.vim . Nó sẽ che giấu các chuỗi thoát ANSI thực tế trong tệp của bạn và sử dụng tô sáng cú pháp để tô màu văn bản một cách thích hợp. Vấn đề với việc sử dụng cái này trong máy nhắn tin là bạn sẽ phải làm cho vim nhận ra khi nào nên sử dụng cái này. Tôi không chắc chắn nếu bạn chỉ có thể tải nó một cách đơn giản, hoặc nếu nó sẽ xung đột với các tệp cú pháp khác. Bạn sẽ phải thử nghiệm với nó.

Một câu trả lời dài: Điều tốt nhất bạn có thể hy vọng là một giải pháp không di động một phần. Ít hơn không thực sự hiểu các chuỗi thoát thiết bị đầu cuối, vì chúng chủ yếu phụ thuộc vào thiết bị đầu cuối, nhưng ít có thể nhận ra (một tập hợp con), và sẽ biết để chuyển chúng qua thiết bị đầu cuối, nếu bạn sử dụng -r (hoặc là -R) Lựa chọn. Thiết bị đầu cuối sẽ diễn giải các chuỗi thoát và thay đổi các thuộc tính của văn bản (màu, đậm, gạch chân ...). Vim, là một biên tập viên chứ không phải là máy nhắn tin, không chỉ đơn giản chuyển các ký tự điều khiển thô cho thiết bị đầu cuối. Nó cần hiển thị chúng theo một cách nào đó, vì vậy bạn thực sự có thể chỉnh sửa chúng. Bạn có thể sử dụng các tính năng khác của vim, chẳng hạn như che giấu và tô sáng cú pháp để ẩn các chuỗi và sử dụng chúng để đặt màu của văn bản, tuy nhiên, nó sẽ luôn chỉ xử lý một tập hợp con của trình tự đầu cuối và có thể sẽ không hoạt động trên một số thiết bị đầu cuối .

Đây thực sự chỉ là một trong nhiều vấn đề bạn sẽ gặp phải khi bạn cố gắng sử dụng trình soạn thảo văn bản làm máy nhắn tin.

45
Jan Hlavacek

Bây giờ với vim 8, bạn có thể sử dụng chế độ đầu cuối :terminal và sau đó trong thiết bị đầu cuối đó làm cat myfile và quay lại chế độ bình thường với Ctrl-w N. Điều này sẽ hiển thị mã màu ANSI chính xác. Bằng cách tự động hóa các bước này và đọc từ đầu vào tiêu chuẩn thay vì một tệp, có thể sử dụng vim để thay thế ít hơn.

4
rubystallion