回答:
tmuxスプリットでレンジャーを開き(提案した可能性)、添付するファイルを選択し、使用するパスでファイル名をコピーしてypから、mutt接続ウィンドウに戻りa、接続パスとファイル名を押して貼り付けます。接続ウィンドウの下部に開く行を押しEnterます。
(@Rastapopolousのコメントに対する)ファイル名のスペースの問題に関して、私はそれらを使用しないという強い習慣があることに気付きましたが、レンジャーからパスを貼り付ける上記の方法を再テストすると、ファイル名にスペースが含まれています。何らかの理由で、muttに貼り付けられた添付ファイル名に、追加された名前の一部の繰り返しがあります。バックスペースで「付属物」を削除できます。スペースがエスケープされていなくても、添付ファイルはすぐに送信されます。vimでレンジャーからのパスコピーをテストし、正しく貼り付けましたが、muttでは貼り付けていません。
私は習慣的にtmuxを使用しているため、これは比較的単純な方法であることがわかりました。
あるいは、tmuxとは別に、.bashrcに次のスクリプトがあります。
# email an attachment
function mail_attach ()
{
mutt -F ~/.muttrc -a "$@" -- myemail@gmail.com;
}
export -f mail_attach
これは、メールを作成する前に添付することがわかっている場合に役立ちます。そのため、レンジャー内からファイルを選択しs、シェルコマンドラインを開くように入力して、選択したファイルを%fで示します。
:shell mail_attach %f
を押すEnterと、選択したファイルが添付された電子メールを作成するためのmuttエディターが開きます。ただし、受信者の電子メールアドレスを目的のアドレスに変更する必要があります。おそらく、「To」フィールドが空の状態で電子メールエディターを開くように関数を変更する方法がありますが、十分に知りません。ただし、これは大したことではありません。
複数のファイルの場合、それらが同じフォルダーにある場合、それらをすべて選択してから、@これを押してレンジャーショートカットを%s選択し、選択したファイルへの参照があるシェルコマンドラインを開きます。
:shell %s
次に、mail_attach前に挿入するだけで%sEnterキーを押すと、選択したすべてのファイルが添付された電子メールを作成するためにmuttが開きます。異なるフォルダからファイルを添付したい場合、同じフォルダにそれらを集めることを別にしてそれを行う方法がわかりません。
私は関数を作成した人を称賛したいのですが、それがどこから来たのかはもうわかりません。私ではないことを知っています。
:shell mutt -a %fから直接行うこともできますranger。
@John Floodの答えは私にこれについてもう少し考えさせるきっかけとなり、私は次の回避策を思い付きました。
次のスクリプトをのmutt_attachどこ$PATHかにのReturn代わりに文字を入れて保存します^M(ではvim、これは<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"