2010-04-01 116 views
6

VIM电子邮件的内容,我想查看我很喜欢工作与命令的源文件的当前差异:是否可以使用HTML

vim <(svn diff -dub) 

我真的很想成为能够做的就是通过电子邮件发送彩色差异。我知道Vim可以使用:TOhtml导出HTML,但是如何将此输出传输到HTML电子邮件中?理想的情况下。我希望能够通过一个shell脚本命令发送html diff。

回答

10

下面的一行代码产生一个名为email.html一个HTML文件:

diff file1 file2 | vim - +TOhtml '+w email.html' '+qall!' 

您现在可以使用佩卡的代码来发送电子邮件。

但是,我相信在正确的工作中使用正确的工具 - 而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 

编辑在情况下佩卡的代码没有工作 - 为我 - 因为你没有的mailmutt所需版本安装那么你可以使用sendmail如下发送HTML邮件:

(echo 'To: [email protected]' 
    echo 'Content-Type: text/html' 
    echo 'Subject: test' 
    echo '' 
    cat email.html) | sendmail -t 

它留下头部和电子邮件的正文之间的空行是非常重要的。另外请注意,创建临时文件email.html当然是不必要的。只需将其余的命令粘贴到上面的正确位置,并将重定向删除到文件。

+0

你有一个有趣的“更有效和无忧”的定义。如何让vim从命令行写入和退出+1。 – rampion 2010-04-01 15:13:37

+0

您可以将“+ w email.html”更改为“+%!mutt”或任何可以让vim直接调用邮件命令的地方 – rampion 2010-04-01 15:15:38

+0

@rampion:以这种方式启动Vim实际上效率很低。 Pygments很容易胜过它。无忧无虑,我的意思是Pygments的工作流程在概念上更容易(“语法 - 突出差异”,而不是“在编辑器中打开差异,运行命令,关闭编辑器”),即使它是更多的文本写。两种方法都有我认为的优点。 – 2010-04-01 15:28:38

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" [email protected] < message.html 

这将生成一个纯粹的HTML电子邮件没有纯文本替代 - 为此,你将不得不建立多部分邮件......但也许它会做你需要的。

+0

小心解释downvote?这里有什么技术上的错误吗? – 2010-04-01 14:27:44