Windows 从VIM发送电子邮件

Windows 从VIM发送电子邮件,windows,email,vim,Windows,Email,Vim,我计划通过VIM内部发送电子邮件,但我遇到了一些问题 当通过bang(!)操作符将部分缓冲区(或整个缓冲区)传输到SendEmail时,我的缓冲区中的文本将替换为SendEmail的输出。所以我的第一个问题是:如何将一个范围导入外部命令并放弃它的输出(或者更好:在cmd窗口中显示) 我为SendMail提供的大多数选项在大多数情况下都不会更改(如电子邮件服务器或发件人地址),因此我不想在每次发送邮件时都键入它们:我希望命令将这些参数硬编码,并且可以指定任意数量的附加参数(如-u“subject”

我计划通过VIM内部发送电子邮件,但我遇到了一些问题

  • 当通过bang(!)操作符将部分缓冲区(或整个缓冲区)传输到SendEmail时,我的缓冲区中的文本将替换为SendEmail的输出。所以我的第一个问题是:如何将一个范围导入外部命令并放弃它的输出(或者更好:在cmd窗口中显示)

  • 我为SendMail提供的大多数选项在大多数情况下都不会更改(如电子邮件服务器或发件人地址),因此我不想在每次发送邮件时都键入它们:我希望命令将这些参数硬编码,并且可以指定任意数量的附加参数(如-u“subject”)


  • 这可以通过命令功能(nargs、range)完成,还是需要编写函数?

    最简单的方法是下载并使用。如果
    让g:runview_filtcmd
    等于sendmail命令行,它将获取当前缓冲区的内容,将其传输到sendmail,并在单独的窗口中打印输出。我想这能满足你的需要。如果您想将RunView用于其他内容,可以省略
    g:RunView\u filtcmd
    步骤,只需添加以下命令:

    :command! -nargs=* -range=% SendEmail <line1>,<line2>RunView SendEmail -e oneoption -b twooption <args>
    

    见:


    谢谢,这个很好用!我想知道如果我决定将其作为附件发送,如何将sendEmail路径传递给我的文件…我在答案的末尾添加了一种可能的方法
    :SendEmail -u "subject"
    
    :'<,'>SendEmail -u "subject"
    
    command! -nargs=* SendEmailAsAttachment exe '!SendEmail -e oneoption -b twooption -f' expand('%:p') <args>
    
    !SendEmail -e oneoption -b twooption -f /path/to/filename.txt -u "subject"
    
    :help expand()
    :help :exe