html - 是否可以使用 HTML 通过电子邮件发送 vim 的内容

标签 html email vim diff

我喜欢使用如下命令查看我正在处理的源文件中的当前差异:

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 的代码不起作用——对我来说——因为你没有所需版本的 mailmutt 安装后就可以使用 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/

相关文章:

vim - 你会如何在 Vim 中对驼峰式单词进行语法着色?

java - HTML 表单提交后 Tomcat 8 重定向

javascript - 使用 jQuery 将同一个 div 中的两个不同元素包装到所有类中?

javascript - 如何在单独的窗口中加载所有 href 链接

css - 使用 zurb 电子邮件框架在移动设备中电子邮件没有响应

linux - 多行粘贴 (ctrl-r) 到 ex 或搜索|将 ^M 替换为\r

html - 具有两个动态列和三个元素的 CSS Flexbox 布局

html - Bootstrap 中表单下方的中心按钮

ios - 如何从 UITableView 数据填充电子邮件正文?

linux - inotify 不将 vim 编辑视为修改事件