macro index a "<enter-command>set resolve=no<enter><clear-flag>N<enter-command>set resolve=yes<enter><save-message>=Archive<enter>" "Archive message (mark as read)"
macro pager a "i<enter-command>set resolve=no<enter><clear-flag>N<enter-command>set resolve=yes<enter><save-message>=Archive<enter>" "Archive message (mark as read)"
我想出了一个解决方案,需要Vim(我选择的编辑器)加上一个Vimscript函数、一个简单的Bash脚本和一个模板文件。这可确保文本被正确编码(例如
format=flowed
),因为Mutt实际上会处理文本编辑器保存的文件(在Mutt 手册中搜索“Space-stuffing” )。一个(也许)更好的解决方案正在酝酿中,该解决方案仅在Mutt中实现,但出于Mutt:如何禁用为单个内联纯文本附件指定文件名?中列出的原因,该解决方案仍然不够完善。此外,附加的文本文件(模板回复)不会以任何方式进行处理,这可能会给收件人带来问题。
无论如何,Vimscript函数(存储在中)会用模板文件中的文本替换Mutt
~/.vimrc
准备的回复文本:第一行删除所有内容(存入黑洞寄存器),第二行从模板文件读取模板文本,第三行删除由
read
(r
; 再次存入黑洞寄存器) 插入的前导空行,最后一行保存文件并退出Vim。Bash脚本(
~/.mutt/vim-auto-reply
) 用作Mutt的 的临时替代editor
,并确保上述函数被调用为Vim自动命令:单击按键的Mutt宏(在此示例中绑定到Esc- a)如下所示:
让我们解开命令:
<enter-command>set editor=~/.mutt/vim-auto-reply<enter>
:临时将 设置editor
为我们的脚本(用模板替换消息内容并立即退出Vim),<reply>
:回复选定的消息(需要set fast_reply
),<edit-from><kill-line>Do Not Reply <[email protected]><enter>
From
:用合适的值替换标头中的发件人,<edit-subject>)<bol><delete-char><delete-char><delete-char><delete-char>Automatic Reply (was: <enter>
:更改主题(例如,“原始主题” --> “自动回复(原先为:原始主题)”),四个s 删除Mutt在回复时<delete-char>
添加的“回复:” ,<send-message>
:发送我们的自动回复,a
:存档原始邮件,<enter-command>set editor=vim<enter>
:恢复我们的原始editor
。倒数第二个命令( )与我的存档宏相关联,该宏也将该消息标记为已读( Index和Pager
a
之间的唯一区别是前导):i
再次,让我们解析一下这里的内容:
<enter-command>set resolve=no<enter>
:我们不想在执行以下步骤后继续处理下一条消息,<clear-flag>N
:清除“新”标志(即将该消息标记为已读),<enter-command>set resolve=yes<enter>
:恢复原始行为(每当执行修改当前消息的命令时前进到下一条消息),<save-message>=Archive<enter>
:将原始邮件保存到存档文件夹,i
的领先:首先跳到索引(其余部分正常工作所需)。使用方法:只需在索引或分页器中按下Esc-即可。:)a