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


답변:


2

tmux 분할에서 레인저를 열고 (추천 가능) 첨부 할 파일을 선택하고 경로를 사용하여 파일 이름을 복사 yp한 다음 mutt attach 창으로 돌아가서 a첨부 파일 경로와 파일 이름을 첨부 창의 맨 아래에있는 줄을 열고를 누릅니다 Enter.

파일 이름의 공백 문제 (@Rastapopolous의 의견에 대한 응답)와 관련하여 공간을 사용하지 않는 강한 습관이 있음을 깨달았지만 레인저에서 경로를 붙여 넣는 위의 방법을 다시 테스트하면 파일 이름에 공백이 있습니다. 어떤 이유로 든 mutt에 붙여진 첨부 파일 이름에 추가 된 이름의 일부가 반복됩니다! "부록"을 제거하기 위해 백 스페이스를 사용할 수 있으며, 이스케이프되지 않은 공간에서도 첨부 파일을 쉽게 보낼 수 있습니다. vim에서 레인저의 경로 복사를 테스트했으며 올바르게 붙여 넣지 만 음소거 상태는 아닙니다.

습관적으로 tmux를 사용하기 때문에 비교적 간단한 방법입니다.

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

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

export -f mail_attach

이메일을 작성하기 전에 첨부 할 것임을 알 때 유용합니다. 따라서 레인저 내에서 파일을 선택 s하고 셸 명령 줄을 열도록 입력하고 선택한 파일을로 표시합니다 %f.

:shell mail_attach %f

를 누르면 Enter이미 선택된 파일이 첨부 된 이메일을 작성하기위한 뮤트 편집기가 열립니다. 그러나 수신자 이메일 주소를 원하는 주소로 변경해야합니다. 비어있는 "받는 사람"필드를 사용하여 전자 메일 편집기를 열도록 기능을 변경하는 방법이있을 수 있지만 충분하지 않습니다. 그러나 나는 이것이 큰 문제라고 생각하지 않습니다.

여러 파일의 경우 동일한 폴더에있는 경우 모두 선택하고 선택한 파일에 대한 참조가있는 @다음과 같이 쉘 명령 줄을 여는 레인저 바로 가기 인을 누릅니다 %s.

:shell %s

그런 다음 mail_attach이전에 단순히 삽입 %s하고 Enter 키를 누르면 선택한 모든 파일이 이미 첨부 된 이메일을 작성하기 위해 음소거가 열립니다. 다른 폴더의 파일을 첨부하려면 동일한 폴더에 파일을 수집하는 것 외에는 그렇게하는 방법을 모르겠습니다.

함수를 만든 사람에게 신용을주고 싶지만 더 이상 어디에서 왔는지 알 수 없습니다. 나는 내가 아니었다는 것을 안다.


답변 주셔서 감사합니다! 방금 좀 더 간소화 된 대안을 게시했는데 흥미로울 것입니다.
Rastapopoulos 19

그러나 대안에 대해 대단히 감사드립니다. 나는 레인저에 너무 얽매여 있고 동시에 스크립트를 레인저에 적용하는 기술이 부족하다고 생각합니다!
John Flood

레인저 용으로 게시 한 스크립트를 수정했습니다. 유일한 단점은 파일 이름에 공백이있는 파일에서는 작동하지 않는 것입니다. (내 버전의 mutt입니까, 아니면 '파일 첨부'작성 메뉴에 <Space> 문자를 입력 할 수 없습니까?
Rastapopoulos

좋은 트릭이며 :shell mutt -a %f에서 직접 할 수도 있습니다 ranger.
Rastapopoulos

1
"리터럴 리턴 캐릭터"에 대한 당신의 설명은 트릭을했습니다! 귀하의 원본 스크립트가 이제 작동합니다. 감사합니다 @Rastapopoulos!
John Flood

1

@ John Flood의 대답은 이것에 대해 조금 더 생각하도록 영감을 주었고 다음 해결 방법을 생각해 냈습니다.

로 다음 스크립트 저장을 mutt_attach어딘가에 $PATHlitteral와, Return대신 문자 ^M(에 vim,이 눌러 달성 <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창의 첫 번째 창에서 EmailA의 tmux이름이 세션 email(예를 들어, 사용하여 만든 명령을 tmux new -s email세션 창을 지정. 그리고 창 목적으로 디버깅을 위해 주로 편리합니다) Enter 키를 누릅니다 Control+A의 작성 메뉴 vifm에서 열립니다 choose-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"
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.