Sử dụng bộ chọn tệp thay thế trong mutt


Câu trả lời:


2

Bạn có thể mở ranger trong phần tách tmux (một khả năng bạn đã đề xuất), chọn tệp sẽ được đính kèm, sao chép tên tệp bằng đường dẫn của nó bằng cách sử dụng ypvà sau đó quay lại cửa sổ đính kèm mutt, nhấn avà dán đường dẫn đính kèm và tên tệp trong dòng mở ra ở dưới cùng của cửa sổ đính kèm và nhấn Enter.

Về vấn đề khoảng trắng trong tên tệp (phản hồi bình luận của @Rastapopolous), tôi nhận ra rằng tôi có thói quen không sử dụng chúng, nhưng thử nghiệm lại phương pháp dán đường dẫn từ kiểm lâm viên ở trên, tôi thấy rằng khi Tên tệp có khoảng trắng, vì một số lý do, tên tệp đính kèm được dán trong mutt có sự lặp lại của một phần của tên được nối! Người ta có thể xóa lùi để xóa "phần phụ" và tệp đính kèm dễ dàng được gửi ngay cả với các khoảng trắng không được thoát. Tôi đã kiểm tra bản sao đường dẫn từ kiểm lâm trong vim và nó dán chính xác, nhưng không phải trong mutt.

Vì tôi thường xuyên sử dụng tmux, tôi thấy đây là một phương pháp tương đối đơn giản.

Ngoài ra và độc lập với tmux, tôi cũng có tập lệnh sau trong .bashrc:

# email an attachment
function mail_attach ()
{
    mutt -F ~/.muttrc -a "$@" -- myemail@gmail.com;
}

export -f mail_attach

Điều này hữu ích khi bạn biết bạn sẽ đính kèm trước khi soạn email. Vì vậy, từ bên trong ranger, người ta chỉ cần chọn một tệp, gõ sđể mở một dòng lệnh shell và cho biết tệp đã chọn với %f, đó là:

:shell mail_attach %f

Nhấn Entersẽ mở trình soạn thảo mutt để soạn email đã đính kèm tệp đã chọn. Tuy nhiên, sau đó người ta phải thay đổi địa chỉ email người nhận thành địa chỉ mong muốn. Có lẽ có một cách để thay đổi chức năng để mở trình chỉnh sửa email bằng trường "To" trống, nhưng tôi không biết đủ. Tuy nhiên, tôi không thấy đây là một vấn đề lớn.

Đối với nhiều tệp, nếu chúng nằm trong cùng một thư mục, tôi chọn tất cả chúng và sau đó nhấn @phím tắt ranger để mở dòng lệnh shell như thế này trong đó %stham chiếu đến các tệp đã chọn:

:shell %s

Sau đó, người ta chỉ cần chèn mail_attachtrước %svà nhấn enter sẽ mở mutt để soạn email đã có tất cả các tệp đã chọn. Nếu bạn muốn đính kèm các tệp từ các thư mục khác nhau, tôi không biết làm thế nào ngoài việc thu thập chúng vào cùng một thư mục.

Tôi muốn cung cấp tín dụng cho bất cứ ai tạo ra chức năng, nhưng tôi không còn biết nó đến từ đâu. Tôi biết đó không phải là tôi.


Cảm ơn câu trả lời của bạn! Tôi chỉ đăng một phương pháp thay thế, hợp lý hơn một chút, mà bạn có thể thấy thú vị.
Rastapopoulos

Cảm ơn rất nhiều vì sự thay thế, tuy nhiên, tôi nghĩ rằng tôi quá thích thú với kiểm lâm viên, đồng thời, thiếu các kỹ năng để điều chỉnh kịch bản của bạn thành kiểm lâm!
John Flood

Tôi đã điều chỉnh kịch bản tôi đã đăng cho kiểm lâm. Chỉ có nhược điểm là nó dường như không hoạt động đối với tên tệp có khoảng trắng trong đó. (Đây chỉ là phiên bản mutt của tôi hay không thể nhập ký tự <Space> trong menu soạn thảo 'Đính kèm tệp'?
Rastapopoulos

Thủ thuật hay, và bạn cũng có thể làm :shell mutt -a %ftrực tiếp từ ranger.
Rastapopoulos

1
Giải thích của bạn về "nhân vật trở lại theo nghĩa đen" đã lừa Kịch bản gốc của bạn bây giờ làm việc cho tôi. Cảm ơn @Rastapopoulos!
John Lũ

1

Câu trả lời của @John Flood đã thôi thúc tôi suy nghĩ thêm một chút về điều này, và tôi đã đưa ra cách giải quyết sau đây, có vẻ như hoạt động khá tốt.

Lưu tập lệnh sau dưới dạng mutt_attachmột nơi nào đó $PATH, với Returnký tự rác thay vì ^M(trong vim, điều này đạt được bằng cách nhấn <c-v><Return>trong chế độ chèn).

#!/usr/bin/env bash

tmp=$(mktemp)

vifm "$HOME" -c "set nohlsearch" --choose-files "$tmp"
# ranger "$HOME" --choosefiles="$tmp"

while IFS="" read -r file; do
    tmux send-keys -t email:Email.0 -l "a$file^M";
done < "$tmp"

Trong .muttrc, xác định

macro compose \CA "!mutt_attach\n"

Bây giờ nếu bạn mở mutttrong khung đầu tiên của cửa sổ Emailtrong một tmuxphiên có tên email(ví dụ: được tạo bằng lệnh tmux new -s email. Chỉ định phiên, cửa sổ và cửa sổ thuận tiện chủ yếu cho mục đích gỡ lỗi) và nhấn Control+Atrong menu soạn thảo, vifmsẽ mở trong choose-fileschế độ và tập tin đã chọn sẽ được tự động đính kèm.

Tốt hơn nữa, điều này cho phép bạn gắn thẻ một số tệp vifmbằng cách sử dụng t(hoặc chế độ trực quan) và rangersử dụng Spacevà đính kèm tất cả chúng cùng một lúc!

EDIT : Tôi nhận thấy rằng mã không hoạt động đối với tên tệp có chứa khoảng trắng, vì dường như không thể nhập một khoảng trắng trong menu soạn thảo tệp đính kèm trong phiên bản mutt của tôi ... Đây là một cách giải quyết (hơi xấu xí):

#!/usr/bin/env bash

# File in which to store the list of filenames to attach
tmp=$(mktemp)

vifm "$HOME" -c "set nohlsearch" --choose-files "$tmp"
# ranger "$HOME" --choosefiles="$tmp"

while IFS="" read -r file; do

    # Workaround for filenames that contain spaces
    if [[ "$file" = *" "* ]]; then
        file_no_space=/tmp/$(basename "$file" | sed 's/ /_/g')
        ln -s -f "$file" "$file_no_space"
        file="$file_no_space"
    fi

    tmux send-keys -t email:Email.0 -l "a$file^M";
done < "$tmp"
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.