我打算通过SendEmail从VIM内部发送电子邮件,但是遇到了一些问题。
可以通过命令功能(输入,范围)完成此操作,还是需要编写一个函数?
最佳答案
最简单的选择是下载RunView plugin from the Vim website并使用它。如果let g:runview_filtcmd
等于SendEmail命令行,它将获取当前缓冲区的内容,将其传递给SendEmail并在单独的窗口中打印输出。我认为这可以满足您的需求。如果要将RunView用于其他内容,则可以省略g:runview_filtcmd
步骤,而只需添加以下命令:
:command! -nargs=* -range=% SendEmail <line1>,<line2>RunView SendEmail -e oneoption -b twooption <args>
然后执行:
:SendEmail -u "subject"
或者
:'<,'>SendEmail -u "subject"
我没有测试过任何一个,但是它应该很容易工作。
如果要手动执行此操作,则可能必须编写一个函数。 RunView的工作方式是将整个缓冲区复制到寄存器中,创建一个新窗口,将缓冲区粘贴到该窗口的末尾,然后通过程序过滤新行。它在开始时添加了一个日期/时间戳,以分隔同一程序的多次运行。复制起来并不难,但是您可能需要一个函数。
编辑以回应评论:
如果要将路径作为参数发送到SendEmail,则可以执行以下操作(我尚未对此进行测试,因此可能需要调整一下)。
command! -nargs=* SendEmailAsAttachment exe '!SendEmail -e oneoption -b twooption -f' expand('%:p') <args>
请注意,
:exe
将参数与空格连接在一起,因此调用SendEmailAsAttachment -u "subject"
会扩展为:!SendEmail -e oneoption -b twooption -f /path/to/filename.txt -u "subject"
看:
:help expand()
:help :exe
关于windows - 从VIM发送电子邮件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3922561/