Verwenden Sie alternative Dateiauswahl in Mutt


Antworten:


2

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 "$@" -- 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, 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).

#!/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 .muttrcdefinieren

macro compose \CA "!mutt_attach\n"

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 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"
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.