Tôi có thể mở tin nhắn chưa đọc tiếp theo trong mutt bằng một phím không?


16

Có cách nào để mở tin nhắn chưa đọc tiếp theo muttbằng một phím không? Tôi có thể chuyển sang phần chưa đọc tiếp theo next-new-then-unread, được ràng buộc Tabtheo mặc định. Tuy nhiên, nếu không có tin nhắn chưa đọc trong hộp thư hiện tại, thì tôi phải sử dụng next-unread-mailboxthay thế (không bị ràng buộc theo mặc định). Dù sao đây cũng là tối ưu phụ, bởi vì nếu tôi có một tin nhắn mới, hãy thoát ra mutt, sau đó mở muttlại, điều này sẽ không chuyển tôi đến hộp thư chứa các tin nhắn "mới". (Có lẽ hộp thư không còn được đọc nữa.)

Ngoài ra, cả hai đều chuyển sang tin nhắn tiếp theo trong chế độ xem chỉ mục và tôi phải tự mở tin nhắn trong chế độ xem máy nhắn tin (với Enter). Có cách nào để mở tin nhắn chưa đọc tiếp theo, cho dù đó là hộp thư nào?

Tôi đang sử dụng neomutt, vì vậy một cách giải quyết một phần tôi đã tìm thấy là sử dụng các lệnh thanh bên.

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

Vấn đề là điều này sẽ tự động mở hộp thư chưa đọc tiếp theo (từ thanh bên). Do đó, nếu có các tin nhắn chưa đọc trong hộp thư hiện tại và một tin nhắn khác, lệnh này sẽ mở tin nhắn trong hộp thư khác thay vì hiện tại.

Câu trả lời:


2

Để bắt đầu, bạn có thể sử dụng một macro như thế này để tự động chuyển sang tin nhắn mới:

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

Tuy nhiên, lưu ý rằng nếu không có tin nhắn mới, chỉ có Enter phím sẽ được nhấn và tin nhắn hiện tại sẽ được mở.

Để thay thế nếu Maildirđược sử dụng, chúng tôi có thể sử dụng ~/bin/mutt-new.shtập lệnh sẽ kiểm tra xem có thư mới không:

#!/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>'

Thêm cái này vào ~/.muttrc:

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

BIÊN TẬP:

Làm thế nào về điều này: kịch bản sau đây trước tiên sẽ kiểm tra nếu có thư mới trong hộp thư hiện tại:

#!/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

Thêm cái này vào ~/.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"'

BIÊN TẬP:

Bạn đã nói:

Dù sao đây cũng là tối ưu phụ, bởi vì nếu tôi có một tin nhắn mới, hãy bỏ mutt, sau đó mở lại mutt, điều này sẽ không chuyển tôi đến hộp thư chứa các tin nhắn "mới". (Có lẽ hộp thư không còn được đọc nữa.)

Điều này có thể được khắc phục bằng cách:

set mark_old=no

Cảm ơn câu trả lời. Một vấn đề lớn với cách tiếp cận này là nó chạy <next-unread-mailbox>bất kể có tin nhắn chưa đọc trong hộp thư hiện tại hay không. Trong trường hợp này, nó sẽ chuyển sang hộp thư khác và không mở thư chưa đọc tiếp theo trong hộp thư hiện tại. Một vấn đề khác (theo câu hỏi của tôi) là <next-unread-mailbox>không tìm kiếm các tin nhắn chưa đọc / mới mà là các hộp thư chưa đọc .
Sparhawk

@Sparhawk: xem chỉnh sửa. Đó là một câu hỏi thú vị. Thật không may muttlà không hoàn toàn có kịch bản và đó là một sự xấu hổ.
Arkadiusz Drabchot

@Sparhawk: xem thêm một chỉnh sửa. Macro tôi đề xuất sẽ tự động mở e-mail mới trong hộp thư hiện tại nếu có bất kỳ trước khi chuyển sang các malibox khác. Tôi cũng đề nghị làm thế nào để vô hiệu hóa đánh dấu tin nhắn như Osau khi rời đi mutt.
Arkadiusz Drabchot

Cảm ơn. Tôi đang đi nghỉ vào lúc này, nhưng tôi sẽ kiểm tra nó khi tôi quay trở lại. Có vẻ đầy hứa hẹn.
Sparhawk
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.