하나의 키로 다음 읽지 않은 메시지를 mutt으로 열 수 있습니까?


16

읽지 않은 다음 메시지를 mutt단일 키로 열 수있는 방법이 있습니까? 로 다음 읽지 않은 상태로 이동할 수 있으며 기본적으로 next-new-then-unread바인딩되어 Tab있습니다. 그러나 현재 사서함에 읽지 않은 메시지가 없으면 next-unread-mailbox대신 기본적으로 언 바운드 를 사용해야 합니다. 어쨌든 차선책입니다. 새 메시지가 있으면 종료 mutt한 다음 mutt다시 열면 "새"메시지가 포함 된 사서함으로 이동하지 않습니다. (아마도 사서함을 더 이상 읽지 않은 것 같습니다.)

또한이 두 가지 모두 인덱스보기에서 다음 메시지로 이동하고 페이저보기 ( Enter)로 메시지를 수동으로 열어야합니다 . 어떤 사서함에 있는지 읽지 않은 다음 읽지 않은 메시지 를 여는 방법이 있습니까?

나는 neomutt를 사용하고 있으므로 내가 찾은 부분 해결 방법은 사이드 바 명령을 사용하는 것입니다.

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

문제는 읽지 않은 다음 사서함 (사이드 바에서)을 자동으로 여는 것입니다. 따라서 현재 사서함과 다른 사서함에 읽지 않은 메시지가있는 경우이 명령은 현재 사서함 대신 다른 사서함에서 메시지를 엽니 다.

답변:


3

우선 다음과 같은 매크로를 사용하여 새 메시지로 자동 이동할 수 있습니다.

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>는 읽지 않은 새 메시지를 찾지 않고 읽지 않은 사서함을 찾는 것입니다 .
Sparhawk

@Sparhawk : 편집을 참조하십시오. 흥미로운 질문입니다. 운 좋게도 mutt완전히 스크립팅 할 수 없으며 부끄러운 일입니다.
Arkadiusz Drabczyk

@Sparhawk : 또 다른 편집을보십시오. 내가 제안한 매크로는 다른 사서함으로 이동하기 전에 현재 사서함에서 새 전자 메일을 자동으로 엽니 다. 또한 O떠난 후 메시지 표시를 해제하는 방법도 제안했습니다 mutt.
Arkadiusz Drabczyk

감사. 나는 지금 휴가 중이지만 돌아올 때 시험해 볼 것입니다. 유망 해 보인다.
Sparhawk
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.