mutt에서 대체 파일 선택기 사용

mutt에서 대체 파일 선택기 사용

존재하다바보, 파일 브라우저를 사용할 수 있습니까?비빔또는숲지기(아마도멀티플렉서분할)을 사용하여 이메일에 첨부할 파일을 선택하시겠습니까?

답변1

tmux 분할에서 레인저를 열고(제안한 가능성) 첨부할 파일을 선택하고 mutt를 사용하여 파일 이름과 해당 경로를 복사한 yp다음 mutt 첨부 창으로 돌아가 a첨부 파일 경로와 파일 이름을 누르고 붙여넣을 수 있습니다. 추가 창 맨 아래 줄을 열고 를 누릅니다 Enter.

파일 이름의 공백 문제(@Rastapopolous의 의견에 대한 응답)와 관련하여 나는 공백을 사용하지 않는 강한 습관이 있다는 것을 깨달았지만 레인저에서 경로를 붙여넣는 위의 방법을 다시 테스트한 결과 파일 이름에 공백이 있는 경우 어떤 이유에서인지 발견했습니다. , mutt에 붙여넣은 첨부 파일 이름에 중복된 이름이 있습니다! 백스페이스를 사용하여 "첨부 파일"을 제거할 수 있으며 공백이 탈출되지 않은 경우에도 첨부 파일을 쉽게 보낼 수 있습니다. vim에서 레인저의 경로 복사본을 테스트했는데 올바르게 붙여넣었지만 mutt에서는 붙여넣지 못했습니다.

나는 tmux 사용에 익숙했기 때문에 이것이 비교적 간단한 방법이라는 것을 알았습니다.

또는 tmux와 별도로 .bashrc에 다음 스크립트도 있습니다.

# email an attachment
function mail_attach ()
{
    mutt -F ~/.muttrc -a "$@" -- [email protected];
}

export -f mail_attach

이는 이메일을 작성하기 전에 첨부 파일을 추가하려는 경우에 유용합니다. 따라서 레인저에서 파일을 선택하고 다음을 입력하여 s선택한 파일을 나타내는 셸 명령줄을 엽니다 %f. 예:

:shell mail_attach %f

누르면 Enter선택한 파일이 첨부된 이메일을 작성할 수 있는 mutt 편집기가 열립니다. 그러나 수신자 이메일 주소를 원하는 주소로 변경해야 합니다. 어쩌면 빈 "받는 사람" 필드가 있는 이메일 편집기를 열도록 기능을 변경하는 방법이 있을 수 있지만 아직 이에 대해 충분히 알지 못합니다. 그러나 나는 그것이 큰 문제라고 생각하지 않습니다.

여러 파일의 경우 동일한 폴더에 있으면 모두 선택한 다음 @Ranger 단축키를 눌러 다음과 같은 셸 명령줄을 엽니다. 여기서 %s선택한 파일에 대한 참조는 다음과 같습니다.

:shell %s

그런 다음 mail_attach앞에 삽입 %s하고 Enter를 눌러 mutt를 열어 선택한 모든 파일이 첨부된 이메일을 작성하세요. 다른 폴더에 있는 파일을 첨부하고 싶으면 같은 폴더에 모으는 것 외에는 방법을 모르겠습니다.

이 기능을 만든 사람에게 감사를 표하고 싶지만 더 이상 그 기능이 어디서 왔는지 모르겠습니다. 나는 그것이 내가 아니라는 것을 압니다.

답변2

@John Flood의 답변은 이에 대해 더 많이 생각하도록 영감을 주었고 잘 작동하는 것 같은 다음 해결 방법을 생각해 냈습니다.

다음 스크립트를 mutt_attach의 어딘가에 저장하고 대신 $PATH리터럴 문자를 사용하십시오 ( 에서는 삽입 모드에서 키를 누르면 됩니다) .Return^Mvim<c-v><Return>

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

에서 .muttrc정의

macro compose \CA "!mutt_attach\n"

이제 이름이 지정된 세션에서 창의 첫 번째 창을 열고 mutt(예: 만들기 명령 사용. 세션, 창 및 창 지정은 주로 디버깅 목적으로 사용됨) 작성 메뉴를 누르면 다음과 같은 메시지가 표시됩니다. 모드를 열면 선택한 파일이 자동으로 첨부됩니다.Emailtmuxemailtmux new -s emailControl+Avifmchoose-files

더 좋은 점은 vifm사용 t(또는 시각적 모드) ranger에서 여러 파일에 태그를 지정 하고 Space동시에 사용하고 추가할 수 있다는 것입니다!

편집하다:내 버전의 mutt에서는 첨부 파일 작성 메뉴에 공백을 입력하는 것이 불가능해 보이기 때문에 공백이 포함된 파일 이름에는 이 코드가 작동하지 않는다는 것을 알았습니다. 다음은 (다소 추악한) 해결 방법입니다.

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

관련 정보