У собачці , можна використовувати файловий браузер , такі як vifm або рейнджер (можливо , в tmux колотого) замість файлу по замовчуванням браузера на , щоб вибрати файл для приєднання до електронної пошти?
У собачці , можна використовувати файловий браузер , такі як vifm або рейнджер (можливо , в tmux колотого) замість файлу по замовчуванням браузера на , щоб вибрати файл для приєднання до електронної пошти?
Відповіді:
Ви можете відкрити рейнджер у розділі tmux (можливість, яку ви запропонували), вибрати файл, який потрібно приєднати, скопіювати ім’я файлу з його контуром за допомогою, yp
а потім повернутися до вікна вкладення мута, натиснути a
та вставити шлях вкладення та ім'я файлу у рядок, який відкриється внизу вікна вкладки, і натисніть Enter
.
Що стосується проблеми пробілів у назві файлу (у відповідь на коментар @Rastapopolous), я зрозумів, що маю сильну звичку не використовувати їх, але повторно перевіряю вищевказаний метод вставки шляху від рейнджера, я вважаю, що коли ім'я файлу має пробіли, чомусь вкладене в mutt ім’я вкладеного файлу має повторення доданої частини імені! Ви можете повернути простір, щоб видалити «додаток», і додаток легко надсилається навіть з пробілами, які не вийшли. Я перевірив копію шляху від ranger in 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
відкриє редактор мута для створення електронного листа, до якого вже додається вибраний файл. Однак потрібно змінити електронну адресу одержувача на потрібну. Можливо, є спосіб змінити функцію, щоб відкрити редактор електронної пошти з порожнім полем "До", але я не знаю достатньо. Однак я не вважаю цього великим.
Для декількох файлів, якщо вони знаходяться в одній папці, я вибираю їх усі, а потім натискаю клавішу @
швидкого доступу, щоб відкрити командний рядок оболонки, як цей, де %s
є посилання на вибрані файли:
:shell %s
Тоді один просто вставляє mail_attach
перед %s
і натисканням клавіші Enter відкриється 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
в першій частині вікна Email
в tmux
сесії з ім'ям email
(створеної, наприклад, команда tmux new -s email
. Вказівка сеансу, вікно і панель зручна в основному для налагодження) і натисніть Control+A
на створення листи меню, vifm
відкриються в choose-files
режимі , і вибраний файл буде доданий автоматично.
Що ще краще, це дозволяє тегувати декілька файлів як у vifm
використанні t
(або візуальному режимі), так і у ranger
використанні Space
та приєднувати їх усі одночасно!
EDIT : Я помітив, що код не працює для імен файлів, які містять пробіли, оскільки видається пробіл у меню композиції вкладень у моїй версії 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"