Mutt'ta alternatif dosya seçici kullanın


Yanıtlar:


2

Bir tmux bölmesinde ranger açabilirsiniz (önerdiğiniz bir olasılık), eklenecek dosyayı seçebilir, kullanarak dosya adını yoluyla kopyalayabilir ypve ardından mutt ekleme penceresine geri dönebilir a, ek yoluna ve dosya adına ekleme penceresinin altında açılan çizgiye basın ve düğmesine basın Enter.

Dosya adındaki boşluklarla ilgili olarak (@Rastapopolous'un yorumuna yanıt olarak), onları kullanmamaya ilişkin güçlü bir alışkanlığım olduğunu fark ettim, ancak yolu rangerden yapıştırma yöntemini yeniden test ettim. dosya adının boşlukları vardır, herhangi bir nedenle, mutt'a yapıştırılan ek adının adının bir kısmının tekrarı vardır! Bir "ek" kaldırmak için geri alabilir ve ekleri kaçtı boşlukları bile kolayca gönderilir. Vim'de ranger'den yol kopyasını test ettim ve doğru yapıştı, ancak mutt değil.

Alışılmış olarak tmux kullandığım için bunu nispeten basit bir yöntem olarak görüyorum.

Alternatif olarak ve tmux'tan bağımsız olarak, .bashrc dosyamda şu komut dosyasına sahibim:

# email an attachment
function mail_attach ()
{
    mutt -F ~/.muttrc -a "$@" -- myemail@gmail.com;
}

export -f mail_attach

Bu, bir e-posta oluşturmadan önce ekleyeceğinizi bildiğinizde kullanışlıdır. Yani, ranger içinden, sadece bir dosya seçer, sbir kabuk komut satırı açmak için yazar ve seçili dosyayı ile gösterir %f, yani:

:shell mail_attach %f

Düğmesine basıldığında Enter, seçilen dosyanın ekli olduğu bir e-posta oluşturmak için ses editörü açılır. Ancak, daha sonra alıcı e-posta adresini istenen adresle değiştirmeniz gerekir. Boş bir "Kime" alanı ile e-posta düzenleyicisini açmak için işlevi değiştirmenin bir yolu olabilir, ancak yeterince bilmiyorum. Ancak, bunu çok önemli bulmuyorum.

Birden fazla dosya için, aynı klasördeyse, hepsini seçer ve sonra seçili dosyalara referans @olan kabuk komut satırını açmak için bir ranger kısayolu olan tuşuna basın %s:

:shell %s

Daha sonra biri mail_attachönce eklenir %sve enter tuşuna basıldığında, seçilen tüm dosyalar zaten eklenmiş olan e-postayı oluşturmak için mutt açılır. Farklı klasörlerden dosya eklemek istiyorsanız, bunları aynı klasöre toplamak dışında nasıl yapacağımı bilmiyorum.

İşlevi yaratan kişiye kredi vermek istiyorum, ancak artık nereden geldiğini bilmiyorum. Ben olmadığımı biliyorum.


Cevabınız için teşekkürler! Sadece ilginç bulabileceğiniz alternatif, biraz daha aerodinamik bir yöntem yayınladım.
Rastapopoulos

Alternatif için çok teşekkürler, ancak, sanırım ranger için çok evli ve aynı zamanda senaryonuzu ranger'a uyarlama becerilerinden yoksunum!
John Flood

Gönderdiğim senaryoyu korucuya uyarladım. Sadece olumsuz, içinde boşluk olan dosya adları için işe yaramaz gibi görünüyor. (Bu sadece mutt sürümüm mü, yoksa 'Dosya ekle' oluşturma menüsüne bir <Space> karakteri yazmak imkansız mı?
Rastapopoulos

Güzel numara, ve :shell mutt -a %fdoğrudan da yapabilirsin ranger.
Rastapopoulos

1
"Gerçek dönüş karakteri" ile ilgili açıklamanız hile yaptı! Orijinal betiğiniz artık benim için çalışıyor. Teşekkürler @Rastapopoulos!
John Flood

1

@John Flood'un cevabı bana bu konuda biraz daha düşünmem için ilham verdi ve ben de oldukça iyi işleyen aşağıdaki geçici çözümü buldum.

Aşağıdaki komut dosyasını , yerine litteral karakterle bir mutt_attachyerde kaydedin (içinde , ekleme modunda basılarak elde edilir ).$PATHReturn^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"

İçinde .muttrc, tanımlayın

macro compose \CA "!mutt_attach\n"

Şimdi açarsanız muttpencerenin ilk bölmesinde Emailbir de tmuxadlandırılmış oturumda email(örneğin oluşturulan komutu tmux new -s emailoturumu, pencere belirtilmesi. Ve bölme hata ayıklama amacıyla çoğunlukla uygundur) ve basın Control+A, oluştur menüsünden içinde vifmaçılacaktır choose-filesmodu , seçilen dosya otomatik olarak eklenecektir.

Daha da iyisi, bu birkaç dosya etiketi sağlar vifmkullanarak t, (veya görsel modda) ve rangerkullanan Spaceve aynı zamanda hepsini takmak!

DÜZENLEME : Kodun boşlukları içeren dosya adları için çalışmadığını fark ettim, çünkü mutt sürümümde ek oluşturma menüsünde bir boşluk yazmak imkansız gibi görünüyor ... İşte (biraz çirkin) bir geçici çözüm:

#!/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"
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.