Użyj alternatywnego selektora plików w mutt


Odpowiedzi:


2

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 "$@" -- myemail@gmail.com;
}

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).

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

W .muttrc, zdefiniuj

macro compose \CA "!mutt_attach\n"

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 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"
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.