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?
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 ypund dann zum mutt attach-Fenster zurückkehren. Drücken Sie aund 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 "$@" -- [email protected];
}
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, sum 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 Enterwird 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 %sfolgt zu öffnen :
:shell %s
Dann fügt man einfach mail_attachvorher ein %sund 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.
Danke für deine Antwort! Ich habe gerade eine alternative, etwas optimierte Methode veröffentlicht, die Sie vielleicht interessant finden.
Rastapopoulos
Vielen Dank für die Alternative, aber ich denke, ich bin zu verheiratet, um Ranger und gleichzeitig nicht die Fähigkeiten, um Ihr Skript auf Ranger anzupassen!
John Flood
Ich habe das Skript, das ich für Ranger gepostet habe, angepasst. Der einzige Nachteil ist, dass es bei Dateinamen mit Leerzeichen nicht funktioniert. (Ist es nur meine Version von mutt oder ist es unmöglich, ein <Leertaste> -Zeichen im Erstellungsmenü "Datei anhängen" einzugeben?
Rastapopoulos
Nizza Trick, und Sie könnten auch :shell mutt -a %fdirekt aus tun ranger.
Rastapopoulos
1
Ihre Erklärung des "buchstäblichen Rückkehrzeichens" hat den Trick getan! Ihr ursprüngliches Skript funktioniert jetzt für mich. Vielen Dank @ Rastapopoulos!
John Flood
1
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_attachirgendwo in $PATH, mit dem Litteral ReturnCharakter statt ^M(in vim, wird dies durch Drücken erreicht <c-v><Return>im Einfügemodus).
Wenn Sie nun muttim ersten Bereich des Fensters Emaileine tmuxSitzung 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+Aim Menü Verfassen auf drücken , vifmwird im choose-filesModus geöffnet , und die ausgewählte Datei wird automatisch angehängt.
Besser noch, so können Sie mehrere Dateien im vifmUsing t(oder Visual Mode) und im rangerUsing Spacetaggen 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 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"
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 Siea
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 SieEnter
.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:
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: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 :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.
quelle
:shell mutt -a %f
direkt aus tunranger
.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 LitteralReturn
Charakter statt^M
(invim
, wird dies durch Drücken erreicht<c-v><Return>
im Einfügemodus).In
.muttrc
definierenWenn Sie nun
mutt
im ersten Bereich des FenstersEmail
einetmux
Sitzung mit dem Namen öffnenemail
(beispielsweise mit dem Befehl erstellttmux new -s email
. Das Angeben der Sitzung, des Fensters und des Bereichs ist vor allem für Debugging-Zwecke praktisch) undControl+A
im Menü Verfassen auf drücken ,vifm
wird imchoose-files
Modus geöffnet , und die ausgewählte Datei wird automatisch angehängt.Besser noch, so können Sie mehrere Dateien im
vifm
Usingt
(oder Visual Mode) und imranger
UsingSpace
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.
quelle