우선 다음과 같은 매크로를 사용하여 새 메시지로 자동 이동할 수 있습니다.
macro index .n "<next-unread-mailbox><enter><next-new-then-unread><enter>" "Go to new mail"
그러나 새 메시지가 없으면 Enter
키만 누르고 현재 메시지가 열립니다.
대안적인 if 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"'
편집하다:
당신은 말했다 :
어쨌든 이것은 차선책입니다. 새 메시지가있는 경우 뮤트를 종료 한 다음 다시 뮤트를 열면 "새"메시지가 포함 된 편지함으로 이동하지 않습니다. (아마도 사서함을 더 이상 읽지 않은 것 같습니다.)
이것은 다음과 같이 해결할 수 있습니다.
set mark_old=no
<next-unread-mailbox>
은 현재 사서함에 읽지 않은 메시지가 있는지 여부에 관계없이 실행된다는 것 입니다. 이 경우 다른 사서함으로 전환되고 현재 사서함에서 읽지 않은 다음 메시지를 열지 않습니다. 내 질문에 따라 또 다른 문제<next-unread-mailbox>
는 읽지 않은 새 메시지를 찾지 않고 읽지 않은 사서함을 찾는 것입니다 .