У собачці , можна використовувати файловий браузер , такі як 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"