Sau đây một liner tạo ra một tập tin HTML có tên email.html
:
diff file1 file2 | vim - +TOhtml '+w email.html' '+qall!'
Bây giờ bạn có thể sử dụng mã Pekka để gửi email.
Tuy nhiên, tôi tin vào việc sử dụng đúng công cụ cho đúng công việc - và VIM có thể không phải là công cụ phù hợp tại đây. Các tô sáng khác tồn tại và việc sử dụng chúng là phù hợp hơn ở đây.
Ví dụ, Pygments có thể được khai thác để tạo ra cùng một kết quả, hiệu quả hơn nhiều và rắc rối-miễn phí:
diff -u report.log .report.log | pygmentize -l diff -f html > email.html
Chú ý rằng điều này tạo ra chỉ cơ thể văn bản thực tế, không phải là style sheet, cũng không giàn giáo HTML xung quanh. Điều này phải được thêm riêng biệt nhưng điều đó cũng không khó. Dưới đây là một kịch bản bash hoàn chỉnh để tạo ra một tập tin HTML tối thiểu hợp lệ:
echo '<!DOCTYPE html><html><head><title>No title</title><style>' > email.html
pygmentize -S default -f html >> email.html
echo '</style></head><body>' >> email.html
diff -u report.log .report.log | pygmentize -l diff -f html >> email.html
echo '</body></html>' >> email.html
EDIT Trong trường hợp rằng mã Pekka đã không làm việc - như đối với tôi - bởi vì bạn không có phiên bản yêu cầu của mail
và mutt
cài đặt thì bạn có thể sử dụng sendmail
như sau để gửi email HTML:
(echo 'To: [email protected]'
echo 'Content-Type: text/html'
echo 'Subject: test'
echo ''
cat email.html) | sendmail -t
Điều quan trọng là để lại một dòng trống giữa phần đầu và phần thân của email. Ngoài ra, hãy lưu ý rằng tất nhiên là không cần thiết để tạo tệp tạm thời email.html
. Chỉ cần dán phần còn lại của các lệnh vào đúng vị trí bên trên và xóa các chuyển hướng đến tệp.
Nguồn
2010-04-01 14:31:17
bạn có định nghĩa thú vị "hiệu quả hơn và không có rắc rối". 1 cho cách để có được vim để viết và thoát khỏi dòng lệnh. – rampion
bạn có thể thay đổi "+ w email.html" thành '+%! Mutt' hoặc bất kỳ thứ gì có vim gọi lệnh thư trực tiếp – rampion
@rampion: Khởi chạy Vim theo cách đó thực sự là không hiệu quả. Pygments dễ dàng làm tốt hơn nó.Một cách đơn giản, tôi chỉ đơn giản có nghĩa là luồng công việc Pygments dễ hiểu hơn ("cú pháp làm nổi bật một diff", trái với "mở một diff trong trình soạn thảo, chạy lệnh, đóng trình soạn thảo") mặc dù nó có nhiều văn bản hơn viết. Cả hai phương pháp đều có giá trị của họ. –