我正在尝试使用 Ranger 将文件附加到 NeoMutt 中的邮件中。到目前为止我所拥有的是
- 运行 ranger 选择要附加的文件并将其名称保存
/tmp/muttattach
到
ranger --choosefile=/tmp/muttattach
- 定义一个宏来读取
muttattach
macro compose V "<attach-file>`cat /tmp/muttattach`<enter>"
问题是,宏仅在启动时运行。当我V在撰写屏幕上按下时,它不会更新文件名。
<pipe-message>
我也尝试过像他们一样直接从 mutt 运行 Ranger这里下载附件,但未能在 zsh 上运行。
答案1
创建一个配置文件,例如〜/.neomutt/attach.macro仅包含宏定义:
macro compose W \
"<attach-file>`cat /tmp/muttattach`<enter>" \
"attach file"
定义另一个宏,它执行以下操作:
- 获取上面的配置文件〜/.neomutt/attach.macro
- 执行命令推W(绑定到新定义的宏)
macro compose V \
"<enter-command>source ~/.neomutt/attach.macro<enter>\
<enter-command>push W<enter>" \
"redefine macro and attach"
因此,按下V
将再次获取配置文件,该文件使用 /tmp/muttattach 的新内容重新定义宏。并执行它。
答案2
感谢 Jakub 的回答,我设法做我想做的事,并从 mutt 中运行 ranger 来选择文件。这是宏:
macro compose V \
"<shell-escape> ranger --choosefile=/tmp/muttattach<enter>\
<enter-command>source ~/.config/neomutt/attach.macro<enter>\
<enter-command>push W<enter>"\
"open ranger, redefine macro and attach"
以及内容~/.config/neomutt/attach.macro
macro compose W \
"<attach-file>`cat /tmp/muttattach`<enter>"\
"attach file"