Tôi nghĩ ý tưởng của bạn có một lỗ hổng cơ bản: không ai nghĩ đến việc cho phép một thứ như vậy.
Rõ ràng vim có khả năng làm nổi bật cú pháp. Nhưng tôi sẽ đặt cược cho bạn một hình nón kem mà nếu bạn có thể quản lý để có được vim để dòng văn bản thông qua và xử lý nó, rằng bạn sẽ không thích kết quả.
Hãy xem xét điều gì sẽ xảy ra khi bạn gửi văn bản đường ống qua more
(hoặc less
nếu bạn muốn). Khi nó đi đến thiết bị đầu cuối, các chương trình này hiển thị một màn hình và đợi bạn nhấn vào thanh dấu cách. Nhưng nếu bạn chuyển hướng stdout đến một số nơi khác so với thiết bị đầu cuối, các chương trình này nhận thấy điều này và chỉ cần sao chép đầu vào của họ vào đầu ra của họ không thay đổi.
Nếu vim không nhận thấy rằng bạn đang chuyển văn bản qua, có thể gửi lệnh di chuyển con trỏ mà bạn có thể không muốn trong đầu ra của mình. Nếu vim không thông báo, nó có khả năng chỉ cần vượt qua văn bản, và không cú pháp màu nó. Chỉ khi vim không thực hiện cú pháp-tô màu nhưng không tiêm công cụ di chuyển con trỏ thì ý tưởng của bạn sẽ hoạt động.
Bạn có thể dùng thử. Dưới đây là một câu trả lời mà thảo luận về các công cụ đường ống thông qua vim:
Execute a command within Vim from the command line
Nhưng tôi nói tại sao không ống văn bản của bạn thông qua một chương trình được thiết kế và dự định để có văn bản cấp nước tập trung qua nó? Pygments có thể tô màu mọi định dạng ngôn ngữ lập trình chính và định dạng đánh dấu.
http://pygments.org/
Ưu điểm lớn tôi xem cho ý tưởng của bạn: bạn có thể tùy chỉnh cách vim không màu cú pháp, có được nó theo cách bạn muốn nó, và sau đó cũng sử dụng vim để xử lý văn bản của bạn. Nhưng nó có thể không khó để tùy chỉnh Pygments, và nó thậm chí có thể được thỏa đáng ra khỏi hộp, trong trường hợp đó chắc chắn sẽ là cách dễ nhất để đi. Và Pygments không chỉ có đầu ra chuỗi ANSI, nó cũng có đầu ra HTML, RTF, LaTeX, vv Vì vậy nếu bạn nhận được Pygments làm việc theo cách bạn muốn, nó sẽ có thể xuất ra bất kỳ định dạng đầu ra nào bạn cần; vim sẽ chỉ có chuỗi ANSI.
Có một nhiều phần mềm thực hiện điều này, pygmentize là một. Tôi chưa bao giờ thấy vim làm điều đó. – carlosdc
Hrm .. [Chủ đề này] (http://stackoverflow.com/questions/3219479/vim-write-buffer-content-to-stdout), mặc dù được đánh giá thấp, dường như gợi ý sử dụng vim làm bộ lọc ở tất cả (về cơ bản những gì tôi đang tìm kiếm ở đây), chỉ là một ý tưởng tồi từ get-go. Điều đó có đúng không? Ý tưởng này chỉ là một người không khởi đầu? –
+1 cho tư duy out-of-the-box. – steveha