我喜欢用以下命令查看我正在处理的源文件中的当前差异:
vim <(svn diff -dub)
我真正希望能够通过电子邮件发送彩色差异。我知道vim可以使用:TOhtml导出HTML,但是如何将此输出转换为html电子邮件?理想的情况下。我希望能够使用单个shell脚本命令发送html diff。
答案 0 :(得分:10)
以下单行生成名为email.html
的HTML文件:
diff file1 file2 | vim - +TOhtml '+w email.html' '+qall!'
您现在可以使用Pekka的代码发送电子邮件。
然而,我相信使用正确的工具来做正确的工作 - 而VIM可能不是正确的工具。其他荧光笔存在,它们的使用在这里更合适。
例如,可以利用Pygments来产生相同的结果,更有效,更轻松:
diff -u report.log .report.log | pygmentize -l diff -f html > email.html
请注意,这只会生成 实际的文本正文,而不是样式表,也不会生成周围的HTML支架。这必须单独添加,但这也不困难。这是一个完整的bash脚本,用于生成有效的最小HTML文件:
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
编辑如果Pekka的代码不起作用 - 对我来说 - 因为您没有安装所需版本的mail
和mutt
,那么您可以使用sendmail
按如下方式发送HTML电子邮件:
( echo 'To: email-address@example.com'
echo 'Content-Type: text/html'
echo 'Subject: test'
echo ''
cat email.html ) | sendmail -t
在电子邮件的标题和正文之间留一个空行非常重要。另外,请注意,创建临时文件email.html
当然没必要。只需将其余命令粘贴到上面的正确位置,然后删除重定向到文件。
答案 1 :(得分:1)
我不是Linux大师,但这看起来应该满足您的输出管道需求:
Send an HTML file as email from the command line.(使用mail
)
还有一行mutt
示例here:
mutt -e "my_hdr Content-Type: text/html"
-s "my subject" you@xxxxxxxxxxx < message.html
这将生成一个没有纯文本替代品的纯HTML电子邮件 - 为此您必须构建多部分邮件......但也许它可以满足您的需求。