Ist es in mutt möglich, einen Dateibrowser wie vifm oder ranger (möglicherweise in einem tmux split) anstelle des Standarddateibrowsers zu verwenden, um eine Datei zum Anhängen an eine E-Mail auszuwählen?
Ist es in mutt möglich, einen Dateibrowser wie vifm oder ranger (möglicherweise in einem tmux split) anstelle des Standarddateibrowsers zu verwenden, um eine Datei zum Anhängen an eine E-Mail auszuwählen?
Antworten:
Sie können ranger in einem tmux split öffnen (eine von Ihnen vorgeschlagene Möglichkeit), die anzuhängende Datei auswählen, den Dateinamen mit dem Pfad kopieren yp
und dann zum mutt attach-Fenster zurückkehren. Drücken Sie a
und fügen Sie den Anhangspfad und den Dateinamen in das ein Linie, die am unteren Rand des Fensters Anhängen geöffnet wird, und drücken Sie Enter
.
In Bezug auf das Problem der Leerzeichen im Dateinamen (als Antwort auf den Kommentar von @Rastapopolous) stellte ich fest, dass ich die Gewohnheit habe, sie nicht zu verwenden, aber die obige Methode zum Einfügen des Pfades von Ranger erneut teste Dateiname enthält Leerzeichen. Aus irgendeinem Grund wird an den Namen des Anhangs, der in mutt eingefügt wurde, ein Teil des Namens angehängt! Man kann die Rücktaste drücken, um den "Anhang" zu entfernen und der Anhang wird ohne weiteres gesendet, auch wenn die Leerzeichen nicht maskiert sind. Ich habe die Pfadkopie von Ranger in vim getestet und sie wurde korrekt eingefügt, aber nicht in mutt.
Da ich normalerweise tmux verwende, ist das für mich eine relativ einfache Methode.
Alternativ und unabhängig von tmux habe ich auch folgendes Skript in meiner .bashrc:
# email an attachment
function mail_attach ()
{
mutt -F ~/.muttrc -a "$@" -- myemail@gmail.com;
}
export -f mail_attach
Dies ist nützlich, wenn Sie wissen, dass Sie eine E-Mail anhängen, bevor Sie eine E-Mail verfassen. Aus Ranger heraus wählt man einfach eine Datei aus, tippt ein, s
um eine Shell-Befehlszeile zu öffnen, und zeigt die ausgewählte Datei mit an %f
, das heißt:
:shell mail_attach %f
Durch Drücken von Enter
wird der Mutt-Editor zum Erstellen einer E-Mail geöffnet, an die bereits die ausgewählte Datei angehängt ist. In diesem Fall muss jedoch die E-Mail-Adresse des Empfängers in die gewünschte geändert werden. Vielleicht gibt es eine Möglichkeit, die Funktion zu ändern, um den E-Mail-Editor mit einem leeren Feld "An" zu öffnen, aber ich weiß nicht genug. Ich finde das jedoch nicht sehr wichtig.
Wenn sich mehrere Dateien im selben Ordner befinden, wähle ich sie alle aus und drücke dann auf @
die Ranger-Verknüpfung, um die Shell-Befehlszeile wie %s
folgt zu öffnen :
:shell %s
Dann fügt man einfach mail_attach
vorher ein %s
und drückt die Eingabetaste, um mutt zum Verfassen der E-Mail zu öffnen, an die bereits alle ausgewählten Dateien angehängt sind. Wenn Sie Dateien aus verschiedenen Ordnern anhängen möchten, weiß ich nicht, wie ich das machen soll, abgesehen davon, dass ich sie in demselben Ordner sammle.
Ich würde gerne denjenigen würdigen, der die Funktion erstellt hat, aber ich weiß nicht mehr, woher sie stammt. Ich weiß, dass ich es nicht war.
:shell mutt -a %f
direkt aus tun ranger
.
Die Antwort von @John Flood hat mich dazu inspiriert, ein bisschen mehr darüber nachzudenken, und ich habe die folgende Problemumgehung gefunden, die recht gut zu funktionieren scheint.
Speichern Sie das folgende Skript als mutt_attach
irgendwo in $PATH
, mit dem Litteral Return
Charakter statt ^M
(in vim
, wird dies durch Drücken erreicht <c-v><Return>
im Einfügemodus).
#!/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"
In .muttrc
definieren
macro compose \CA "!mutt_attach\n"
Wenn Sie nun mutt
im ersten Bereich des Fensters Email
eine tmux
Sitzung mit dem Namen öffnen email
(beispielsweise mit dem Befehl erstellt tmux new -s email
. Das Angeben der Sitzung, des Fensters und des Bereichs ist vor allem für Debugging-Zwecke praktisch) und Control+A
im Menü Verfassen auf drücken , vifm
wird im choose-files
Modus geöffnet , und die ausgewählte Datei wird automatisch angehängt.
Besser noch, so können Sie mehrere Dateien im vifm
Using t
(oder Visual Mode) und im ranger
Using Space
taggen und alle gleichzeitig anhängen!
BEARBEITEN : Ich habe festgestellt, dass der Code nicht für Dateinamen funktioniert, die Leerzeichen enthalten, da es in meiner Version von mutt unmöglich zu sein scheint, ein Leerzeichen in das Menü zum Verfassen von Anhängen einzugeben.
#!/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"