W mutt , czy można użyć przeglądarki plików, takiej jak vifm lub ranger (być może w tmux split) zamiast domyślnej przeglądarki plików, aby wybrać plik do załączenia do wiadomości e-mail?
Możesz otworzyć ranger w tmuxie (opcja, którą zasugerowałeś), wybierz plik do załączenia, skopiuj nazwę pliku wraz ze ścieżką, ypa następnie wróć do okna dołączania mutt, naciśnij ai wklej ścieżkę załącznika i nazwę pliku w linia, która otwiera się na dole okna dołączania i naciśnij Enter.
Jeśli chodzi o kwestię spacji w nazwie pliku (w odpowiedzi na komentarz @Rastapopolous), zdałem sobie sprawę, że mam silny nawyk nieużywania ich, ale ponowne testowanie powyższej metody wklejania ścieżki od tropiciela, stwierdzam, że gdy nazwa pliku ma spacje, z jakiegoś powodu nazwa załącznika wklejonego w mutt ma powtórzenie części nazwy dołączone! Można cofnąć się, aby usunąć „dodatek”, a załącznik jest łatwo wysyłany nawet bez spacji. Przetestowałem kopię ścieżki z tropiciela w vimie i wkleja się poprawnie, ale nie w mutcie.
Ponieważ zwykle używam tmux, uważam to za stosunkowo prostą metodę.
Alternatywnie i niezależnie od tmux, mam również następujący skrypt w moim .bashrc:
# email an attachment
function mail_attach ()
{
mutt -F ~/.muttrc -a "$@" -- [email protected];
}
export -f mail_attach
Jest to przydatne, gdy wiesz, że dołączysz przed utworzeniem wiadomości e-mail. Tak więc z poziomu rangera wystarczy swybrać plik %f, wpisać , aby otworzyć wiersz poleceń powłoki i wskazać wybrany plik za pomocą :
:shell mail_attach %f
Naciśnięcie Enterspowoduje otwarcie edytora mutt do redagowania wiadomości e-mail z załączonym zaznaczonym plikiem. Należy jednak zmienić adres e-mail odbiorcy na żądany. Być może istnieje sposób na zmianę funkcji, aby otworzyć edytor wiadomości e-mail z pustym polem „Do”, ale nie wiem wystarczająco. Jednak nie uważam tego za coś wielkiego.
W przypadku wielu plików, jeśli znajdują się one w tym samym folderze, zaznaczam je wszystkie, a następnie naciskam @skrót do rangera, aby otworzyć wiersz poleceń powłoki w ten sposób, gdzie %sjest odwołanie do wybranych plików:
:shell %s
Następnie wystarczy po prostu wstawić mail_attachprzed %si naciśnięcie Enter otworzy mutt do redagowania wiadomości e-mail, do której są już dołączone wszystkie wybrane pliki. Jeśli chcesz załączyć pliki z różnych folderów, nie wiem, jak to zrobić, oprócz zebrania ich w tym samym folderze.
Chciałbym wyrazić uznanie dla każdego, kto stworzył tę funkcję, ale nie wiem już, skąd ona pochodzi. Wiem, że to nie byłem ja.
Dzięki za odpowiedź! Właśnie opublikowałem alternatywną, nieco bardziej uproszczoną metodę, która może być dla ciebie interesująca.
Rastapopoulos
Bardzo dziękuję za alternatywę, jednak myślę, że jestem zbyt przywiązany do tropiciela, a jednocześnie brakuje mi umiejętności dostosowania scenariusza do tropiciela!
John Flood,
Dostosowałem skrypt, który opublikowałem dla leśniczego. Jedynym minusem jest to, że nie działa w przypadku nazw plików ze spacjami. (Czy to tylko moja wersja mutta, czy też nie jest możliwe wpisanie znaku <Space> w menu tworzenia pliku „Dołącz plik”?
Rastapopoulos
Dobra sztuczka, którą możesz zrobić :shell mutt -a %fbezpośrednio z ranger.
Rastapopoulos
1
Twoje wyjaśnienie „dosłownego znaku powrotu” załatwiło sprawę! Twój oryginalny skrypt działa teraz dla mnie. Dzięki @Rastapopoulos!
John Flood
1
Odpowiedź @John Flood zainspirowała mnie do zastanowienia się nad tym i wymyśliłem następujące obejście, które wydaje się działać całkiem dobrze.
Zapisz poniższy skrypt jako mutt_attachgdzieś w $PATHśrodku, z literą Returnzamiast ^M(w vim, można to osiągnąć przez naciśnięcie <c-v><Return>w trybie wstawiania).
Teraz, jeśli otworzysz muttw pierwszym panelu okna Emailw tmuxsesji o nazwie email(utworzonej na przykład za pomocą polecenia tmux new -s email. Określenie sesji, okna i panelu jest wygodne głównie do celów debugowania) i naciśniesz Control+Aw menu tworzenia, vifmotworzy się w choose-filestrybie , a wybrany plik zostanie automatycznie dołączony.
Co więcej, pozwala to na oznaczenie kilku plików w vifmużyciu t(lub w trybie wizualnym), w rangerużyciu Spacei dołączanie ich wszystkich jednocześnie!
EDYCJA : Zauważyłem, że kod nie działa dla nazw plików zawierających białe spacje, ponieważ wydaje się niemożliwe wpisanie spacji w menu tworzenia załączników w mojej wersji mutt ... Oto (nieco brzydkie) obejście:
#!/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 spacesif[["$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"
Odpowiedzi:
Możesz otworzyć ranger w tmuxie (opcja, którą zasugerowałeś), wybierz plik do załączenia, skopiuj nazwę pliku wraz ze ścieżką,
yp
a następnie wróć do okna dołączania mutt, naciśnija
i wklej ścieżkę załącznika i nazwę pliku w linia, która otwiera się na dole okna dołączania i naciśnijEnter
.Jeśli chodzi o kwestię spacji w nazwie pliku (w odpowiedzi na komentarz @Rastapopolous), zdałem sobie sprawę, że mam silny nawyk nieużywania ich, ale ponowne testowanie powyższej metody wklejania ścieżki od tropiciela, stwierdzam, że gdy nazwa pliku ma spacje, z jakiegoś powodu nazwa załącznika wklejonego w mutt ma powtórzenie części nazwy dołączone! Można cofnąć się, aby usunąć „dodatek”, a załącznik jest łatwo wysyłany nawet bez spacji. Przetestowałem kopię ścieżki z tropiciela w vimie i wkleja się poprawnie, ale nie w mutcie.
Ponieważ zwykle używam tmux, uważam to za stosunkowo prostą metodę.
Alternatywnie i niezależnie od tmux, mam również następujący skrypt w moim .bashrc:
Jest to przydatne, gdy wiesz, że dołączysz przed utworzeniem wiadomości e-mail. Tak więc z poziomu rangera wystarczy
s
wybrać plik%f
, wpisać , aby otworzyć wiersz poleceń powłoki i wskazać wybrany plik za pomocą :Naciśnięcie
Enter
spowoduje otwarcie edytora mutt do redagowania wiadomości e-mail z załączonym zaznaczonym plikiem. Należy jednak zmienić adres e-mail odbiorcy na żądany. Być może istnieje sposób na zmianę funkcji, aby otworzyć edytor wiadomości e-mail z pustym polem „Do”, ale nie wiem wystarczająco. Jednak nie uważam tego za coś wielkiego.W przypadku wielu plików, jeśli znajdują się one w tym samym folderze, zaznaczam je wszystkie, a następnie naciskam
@
skrót do rangera, aby otworzyć wiersz poleceń powłoki w ten sposób, gdzie%s
jest odwołanie do wybranych plików:Następnie wystarczy po prostu wstawić
mail_attach
przed%s
i naciśnięcie Enter otworzy mutt do redagowania wiadomości e-mail, do której są już dołączone wszystkie wybrane pliki. Jeśli chcesz załączyć pliki z różnych folderów, nie wiem, jak to zrobić, oprócz zebrania ich w tym samym folderze.Chciałbym wyrazić uznanie dla każdego, kto stworzył tę funkcję, ale nie wiem już, skąd ona pochodzi. Wiem, że to nie byłem ja.
źródło
:shell mutt -a %f
bezpośrednio zranger
.Odpowiedź @John Flood zainspirowała mnie do zastanowienia się nad tym i wymyśliłem następujące obejście, które wydaje się działać całkiem dobrze.
Zapisz poniższy skrypt jako
mutt_attach
gdzieś w$PATH
środku, z literąReturn
zamiast^M
(wvim
, można to osiągnąć przez naciśnięcie<c-v><Return>
w trybie wstawiania).W
.muttrc
, zdefiniujTeraz, jeśli otworzysz
mutt
w pierwszym panelu oknaEmail
wtmux
sesji o nazwieemail
(utworzonej na przykład za pomocą poleceniatmux new -s email
. Określenie sesji, okna i panelu jest wygodne głównie do celów debugowania) i naciśnieszControl+A
w menu tworzenia,vifm
otworzy się wchoose-files
trybie , a wybrany plik zostanie automatycznie dołączony.Co więcej, pozwala to na oznaczenie kilku plików w
vifm
użyciut
(lub w trybie wizualnym), wranger
użyciuSpace
i dołączanie ich wszystkich jednocześnie!EDYCJA : Zauważyłem, że kod nie działa dla nazw plików zawierających białe spacje, ponieważ wydaje się niemożliwe wpisanie spacji w menu tworzenia załączników w mojej wersji mutt ... Oto (nieco brzydkie) obejście:
źródło