编辑:

编辑:

mutt有没有办法用一个键打开下一条未读消息?我可以使用 移动到下一个未读的内容next-new-then-unread,默认情况下会绑定到Tab。但是,如果当前邮箱中没有未读邮件,那么我必须使用next-unread-mailbox它(默认情况下未绑定)。无论如何,这是次优的,因为如果我有新消息,退出mutt,然后mutt再次打开,这不会将我移动到包含“新”消息的邮箱。 (大概是邮箱不再是未读的。)

此外,这两个操作都会移至索引视图中的下一条消息,并且我必须在寻呼机视图中手动打开该消息(使用Enter)。有没有办法打开下一条未读邮件,无论它位于哪个邮箱?

我正在使用 neomutt,所以我发现的一种部分解决方法是使用侧边栏命令。

macro index,pager , '<sidebar-next-new><sidebar-open><enter>'

问题是这会自动打开下一个未读邮箱(从侧边栏)。因此,如果当前邮箱和另一个邮箱中有未读邮件,此命令将打开另一个邮箱而不是当前邮箱中的邮件。

答案1

对于初学者,您可以使用这样的宏来自动跳转到新消息:

macro index     .n      "<next-unread-mailbox><enter><next-new-then-unread><enter>" "Go to new mail"

但请注意,如果没有新消息,则Enter 只会按下 键并打开当前消息。

作为替代方案Maildir,我们可以使用一个~/bin/mutt-new.sh脚本来检查是否有新邮件:

#!/usr/bin/env sh

if [ "$(find "$HOME"/.muttmail/box1/new -type f -printf '\n' | wc -l)" -eq 0 ]
then
    printf "I think there's no new mail\n" >&2
    printf "Press [ENTER] to continue\n" >&2
    read -r _
    exit 1
fi

echo 'push <next-unread-mailbox><enter><next-new-then-unread><enter>'

将其添加到~/.muttrc

macro index     .n        "!~/bin/mutt-new.sh" "Go to new"

编辑:

怎么样:下面的脚本会首先检查当前邮箱中是否有新邮件:

#!/usr/bin/env sh

cur_mbox=${1/=/}

echo "$1" >> /tmp/PAR
echo "$cur_mbox" >> /tmp/PAR

if [ ! "$(find "$HOME"/.muttmail/"$cur_mbox"/new -type f -printf '\n' | wc -l)" -eq 0 ]
then
    printf "There is new mail in this mailbox\n" >&2
    printf "Press [ENTER] to continue\n" >&2
    read -r _
    echo 'push <next-new-then-unread><enter>'
elif [ ! "$(find "$HOME"/.muttmail/ -type d -name new -exec ls {} \; | wc -l)" -eq 0 ]
then
    printf "There is new mail in other mailboxes\n" >&2
    printf "Press [ENTER] to continue\n" >&2
    read -r _
    echo 'push <next-unread-mailbox><enter><next-new-then-unread><enter>'
else
    printf "I think there's no new mail\n" >&2
    printf "Press [ENTER] to continue\n" >&2
    read -r _
    exit 1
fi

将其添加到~/.muttrc

folder-hook . 'set my_oldrecord=$record; set record=^; set my_folder=$record; set record=$my_oldrecord'
folder-hook . 'macro index .n "<enter-command>source \"~/bin/mutt-new.sh $my_folder |\"<return>" "Go to new"'

编辑:

你说:

无论如何,这是次优的,因为如果我有新消息,退出 mutt,然后再次打开 mutt,这不会将我移动到包含“新”消息的邮箱。 (想必邮箱已经不再是未读的了。)

这可以通过以下方式解决:

set mark_old=no

相关内容