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


13

muttの、それは次のようなファイルブラウザを使用することが可能であるvifmレンジャー(おそらくでtmuxはの電子メールに添付するファイルを選択する代わりに、デフォルトのファイルブラウザの分割)?



1
Muttに関連する問題
マティアスブラウン

回答:


2

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が開きます。異なるフォルダからファイルを添付したい場合、同じフォルダにそれらを集めることを別にしてそれを行う方法がわかりません。

私は関数を作成した人を称賛したいのですが、それがどこから来たのかはもうわかりません。私ではないことを知っています。


ご回答有難うございます!あなたが面白いと思うかもしれない、もう少し合理化された別の方法を投稿しました。
ラスタポポロス

代わりに非常に感謝しますが、私はレンジャーと結婚しすぎていると同時に、あなたのスクリプトをレンジャーに適応させるスキルが不足していると思います!
ジョン洪水

レンジャー用に投稿したスクリプトを適合させました。唯一の欠点は、スペースを含むファイル名では機能しないようです。(それは私のバージョンのmuttですか、それとも 'Attach file'作成メニューに<Space>文字を入力することは不可能ですか?
ラスタポポロス

ナイストリック、そして:shell mutt -a %fから直接行うこともできますranger
ラスタポポロス

1
「文字通りのリターンキャラクター」の説明がうまくいきました。元のスクリプトが機能するようになりました。ありがとう@Rastapopoulos!
ジョン洪水

1

@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"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.