Neomutt 运行命令以在按下宏按键时附加文件

Neomutt 运行命令以在按下宏按键时附加文件

我正在尝试使用 Ranger 将文件附加到 NeoMutt 中的邮件中。到目前为止我所拥有的是

  1. 运行 ranger 选择要附加的文件并将其名称保存/tmp/muttattach
ranger --choosefile=/tmp/muttattach
  1. 定义一个宏来读取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"

定义另一个宏,它执行以下操作:

  1. 获取上面的配置文件〜/.neomutt/attach.macro
  2. 执行命令推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"

相关内容