En mutt , ¿es posible usar un navegador de archivos como vifm o ranger (posiblemente en una división tmux ) en lugar del navegador de archivos predeterminado para seleccionar un archivo para adjuntarlo a un correo electrónico?
En mutt , ¿es posible usar un navegador de archivos como vifm o ranger (posiblemente en una división tmux ) en lugar del navegador de archivos predeterminado para seleccionar un archivo para adjuntarlo a un correo electrónico?
Respuestas:
Puede abrir el guardabosques en una división tmux (una posibilidad que sugirió), seleccionar el archivo que se adjuntará, copiar el nombre del archivo con su ruta usando yp
y luego regresar a la ventana adjuntar mutt, presionar a
y pegar la ruta del archivo adjunto y el nombre del archivo en el línea que se abre en la parte inferior de la ventana adjunta y presiona Enter
.
Con respecto al tema de los espacios en el nombre del archivo (en respuesta al comentario de @Rastapopolous), me di cuenta de que tengo la fuerte costumbre de no usarlos, pero al volver a probar el método anterior de pegar la ruta del guardabosques, encuentro que cuando El nombre del archivo tiene espacios, por alguna razón, el nombre del archivo adjunto pegado en mutt tiene una repetición de parte del nombre adjunto. Uno puede retroceder para eliminar el "apéndice" y el archivo adjunto se envía fácilmente incluso con los espacios sin escapar. Probé la copia de ruta del guardabosques en vim y se pega correctamente, pero no en mutt.
Como uso habitualmente tmux, considero que este es un método relativamente simple.
Alternativamente e independientemente de tmux, también tengo el siguiente script en mi .bashrc:
# email an attachment
function mail_attach ()
{
mutt -F ~/.muttrc -a "$@" -- myemail@gmail.com;
}
export -f mail_attach
Esto es útil cuando sabe que lo adjuntará antes de redactar un correo electrónico. Entonces, desde dentro del guardabosques, uno simplemente selecciona un archivo, escribe s
para abrir una línea de comando de shell e indica el archivo seleccionado con %f
, es decir:
:shell mail_attach %f
Al presionar Enter
se abrirá el editor mutt para componer un correo electrónico que ya tenga adjunto el archivo seleccionado. Sin embargo, uno debe cambiar la dirección de correo electrónico del destinatario a la deseada. Quizás haya una manera de cambiar la función para abrir el editor de correo electrónico con un campo "Para" en blanco, pero no sé lo suficiente. Sin embargo, no me parece un gran problema.
Para varios archivos, si están en la misma carpeta, los selecciono todos y luego presiono @
cuál es un acceso directo de guardabosques para abrir la línea de comando de la shell como esta, donde %s
hay una referencia a los archivos seleccionados:
:shell %s
Luego uno simplemente inserta mail_attach
antes %s
y presionando enter abrirá mutt para componer el correo electrónico que ya tiene todos los archivos seleccionados adjuntos. Si desea adjuntar archivos de diferentes carpetas, no sé cómo hacerlo, aparte de reunirlos en la misma carpeta.
Me gustaría dar crédito a quien creó la función, pero ya no sé de dónde vino. Sé que no fui yo.
:shell mutt -a %f
directamente desde ranger
.
La respuesta de @John Flood me inspiró a pensar un poco más sobre esto, y se me ocurrió la siguiente solución, que parece funcionar bastante bien.
Guarde el siguiente script como mutt_attach
en algún lugar $PATH
, con el Return
carácter literal en lugar de ^M
(en vim
, esto se logra presionando <c-v><Return>
en modo de inserción).
#!/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"
En .muttrc
definir
macro compose \CA "!mutt_attach\n"
Ahora, si abre mutt
en el primer panel de la ventana Email
en una tmux
sesión llamada email
(creada con, por ejemplo, el comando tmux new -s email
. Especificar la sesión, la ventana y el panel es conveniente principalmente para fines de depuración) y presiona Control+A
en el menú de redacción, vifm
se abrirá en choose-files
modo , y el archivo seleccionado se adjuntará automáticamente.
Mejor aún, esto le permite etiquetar varios archivos en vifm
uso t
(o modo visual), y en ranger
uso Space
, ¡y adjuntarlos todos al mismo tiempo!
EDITAR : Noté que el código no funciona para los nombres de archivo que contienen espacios en blanco, ya que parece imposible escribir un espacio en el menú de compilación de archivos adjuntos en mi versión de mutt ... Aquí hay una solución (algo fea):
#!/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"