In mutt , bu gibi bir dosya tarayıcısı kullanmak mümkündür vifm veya ranger (muhtemelen bir de tmux bir e-postaya eklemek için dosyayı seçmek için yerine varsayılan dosya tarayıcısının bölünmüş)?
In mutt , bu gibi bir dosya tarayıcısı kullanmak mümkündür vifm veya ranger (muhtemelen bir de tmux bir e-postaya eklemek için dosyayı seçmek için yerine varsayılan dosya tarayıcısının bölünmüş)?
Yanıtlar:
Bir tmux bölmesinde ranger açabilirsiniz (önerdiğiniz bir olasılık), eklenecek dosyayı seçebilir, kullanarak dosya adını yoluyla kopyalayabilir yp
ve 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, s
bir 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 %s
ve 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.
:shell mutt -a %f
doğrudan da yapabilirsin ranger
.
@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_attach
yerde kaydedin (içinde , ekleme modunda basılarak elde edilir ).$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"
İçinde .muttrc
, tanımlayın
macro compose \CA "!mutt_attach\n"
Şimdi açarsanız mutt
pencerenin ilk bölmesinde Email
bir de tmux
adlandırılmış oturumda email
(örneğin oluşturulan komutu tmux new -s email
oturumu, 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 vifm
açılacaktır choose-files
modu , seçilen dosya otomatik olarak eklenecektir.
Daha da iyisi, bu birkaç dosya etiketi sağlar vifm
kullanarak t
, (veya görsel modda) ve ranger
kullanan Space
ve 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"