muttで代替ファイルセレクタを使用する

muttで代替ファイルセレクタを使用する

存在する愚か、ファイルブラウザを使用できますか?ビビムまたは森林(おそらくマルチプレクサ分割)を使用して電子メールに添付するファイルを選択しますか?

答え1

tmux分割でレンジャーを開き(提案可能性)、添付するファイルを選択してmuttを使用してファイル名とそのパスをコピーし、mutt添付ウィンドウに戻り、添付ファイルのパスypaファイル名をクリックして貼り付けることができます。追加ウィンドウの一番下の行を開き、を押しますEnter

ファイル名の空白の問題(@Rastapopolousのコメントへの応答)に関して、私は空白を使わない強い習慣があることに気づきましたが、レンジャーでパスを貼り付ける上記の方法を再テストした結果、ファイル名にスペースがあります場合は何らかの理由で発見されました。 、muttに貼り付けた添付ファイル名に重複した名前があります!バックスペースを使用して「添付ファイル」を削除し、スペースがエスケープされていなくても添付ファイルを簡単に送信できます。 vimでレンジャーのパスコピーをテストしましたが、正しく貼り付けましたが、muttでは貼り付けることができませんでした。

私はtmuxの使用に慣れていたので、これが比較的簡単な方法であることがわかりました。

あるいは、tmuxとは別に.bashrcに次のスクリプトもあります。

# email an attachment
function mail_attach ()
{
    mutt -F ~/.muttrc -a "$@" -- [email protected];
}

export -f mail_attach

これは、電子メールを作成する前に添付ファイルを追加したい場合に便利です。したがって、レンジャーでファイルを選択して次のように入力して、選択したsファイルを表すシェルコマンドラインを開きます%f。例:

:shell mail_attach %f

タップするとEnter、選択したファイルが添付された電子メールを作成できるmuttエディタが開きます。ただし、受信者のメールアドレスを目的のアドレスに変更する必要があります。おそらく、空の「受信者」フィールドを持つ電子メールエディタを開くように機能を変更する方法があるかもしれませんが、まだこれについて十分にはわかりません。しかし、私はそれが大きな問題だとは思わない。

複数のファイルの場合は、同じフォルダにある場合はすべて選択し、[ @Ranger]ショートカットを押して次のシェルコマンドラインを開きます。ここで%s選択したファイルへの参照は次のとおりです。

:shell %s

次に、mail_attach前に挿入し%sてEnterを押してmuttを開き、選択したすべてのファイルが添付されたEメールを作成します。別のフォルダにあるファイルを添付したい場合は、同じフォルダに集める以外は方法がわかりません。

この機能を作成した人に感謝したいのですが、もはやその機能がどこから来たのかわかりません。私はそれが私ではないことを知っています。

答え2

@John Floodの答えは、これについてもっと考えるようにインスピレーションを与え、うまくいくような次の解決策を思いつきました。

次のスクリプトmutt_attachをのどこかに保存し、代わりに$PATHリテラル文字を使用してください(では、挿入モードでキーを押すだけです)。Return^Mvim<c-v><Return>

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

.muttrc定義

macro compose \CA "!mutt_attach\n"

名前付きセッションでウィンドウの最初のウィンドウを開きmutt(作成コマンドを使用します。セッション、ウィンドウ、およびウィンドウ割り当ては主にデバッグ目的で使用されます)、[作成]メニューをクリックすると次のメッセージが表示されます。モードを開くと、選択したファイルが自動的に添付されます。Emailtmuxemailtmux new -s emailControl+Avifmchoose-files

より良いことは、vifm使用t(またはビジュアルモード)rangerで複数のファイルにタグを付け、Space同時に使用して追加できることです!

編集する:私のバージョンのmuttでは、添付ファイルの作成メニューにスペースを入力することは不可能に見えるので、スペースを含むファイル名にはこのコードが機能しないことがわかりました。以下は(やや醜い)回避策です。

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

関連情報