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


60

Nói tóm lại, tôi đang cố gắng thay thế lessbằng vim( vimpager). Tôi có các cài đặt cho các 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ể. lesshiểu mã màu và hiển thị chúng độc đáo. Làm cách nào tôi có thể vimphân tích mã và hiển thị màu sắc / độ đậm theo cách lessnày?

Câu trả lời:


45

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 thực sự không hiểu các chuỗi thoát của 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-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 để cài đặ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.


Để đặt nó một cách ngắn gọn, bạn phải viết một phần của trình giả lập thiết bị đầu cuối trong Vim, phần xử lý các chuỗi thoát thiết bị đầu cuối có trong đầu vào của bạn.
Gilles 'SO- ngừng trở nên xấu xa'

Cảm ơn, tôi nghĩ rằng tôi đang từ bỏ. Nếu nó không dễ dàng thì nó không còn ý nghĩa nữa.
phunehehe

1
Liên kết @JanHlavacek bị hỏng :(
Nitrodist

19
@Nitrodist: less -r FILE( nguồn )
Adobe

1
Có vẻ như liên kết của Jan đã chuyển sang linux-tips.com/t/how-to-enable-syntax-highlighting-in-less/208
Timothy Zorn

2

Bây giờ với vim 8, bạn có thể sử dụng chế độ thiết bị đầu cuối :terminalvà sau đó trong thiết bị đầu cuối đó làm cat myfilevà quay lại chế độ bình thường với Ctrl-w N. Điều này sẽ hiển thị chính xác mã màu ANSI. 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.


Điều đó không trả lời câu hỏi nào cả. Làm thế nào để thay thế less?
ossbfox

@ossbfox Nếu bạn chạy ls --color=always >/tmp/colored.txtvà sau đó trong vim :terminal cat /tmp/colored.txttheo sau :only, thì bạn sẽ có đầu ra ls được tô màu độc đáo trong vim như ít làm. Vì vim hỗ trợ truyền các lệnh dưới dạng đối số dòng lệnh khi khởi động, rõ ràng có thể tìm hiểu xung quanh để giải pháp đó hoạt động để thay thế less:)
rubystallion
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.