我喜欢使用如下命令查看我正在处理的源文件中的当前差异:
vim <(svn diff -dub)
我真正希望能够做的是通过电子邮件发送彩色差异。我知道 vim 可以使用 :TOhtml 导出 HTML,但是如何将此输出通过管道传输到 html 电子邮件中?理想情况下。我希望能够使用单个 shell 脚本命令发送 html 差异。
最佳答案
以下单行代码生成一个名为 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 脚手架。这必须单独添加,但这也不难。这是生成有效的最小 HTML 文件的完整 bash 脚本:
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
当然是不必要的。只需将其余命令粘贴到上面的正确位置并删除重定向到文件。
关于html - 是否可以使用 HTML 通过电子邮件发送 vim 的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2561040/