gpt4 book ai didi

windows - 从 VIM 发送电子邮件

转载 作者:可可西里 更新时间:2023-11-01 09:56:48 25 4
gpt4 key购买 nike

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

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

  2. 我提供给 SendMail 的大多数选项大部分时间都不会改变(比如电子邮件服务器或发件人地址),所以我不想每次发送邮件时都输入它们:我想要一个具有这些参数的硬编码命令,并且我可以在其中指定任意数量的附加参数(例如 -u "subject")。

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

最佳答案

最简单的选择是下载 RunView plugin from the Vim website并使用它。如果您 让 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com