No mutt , é possível usar um navegador de arquivos como vifm ou ranger (possivelmente em uma divisão do tmux ) em vez do navegador de arquivos padrão para selecionar um arquivo para anexar a um email?
No mutt , é possível usar um navegador de arquivos como vifm ou ranger (possivelmente em uma divisão do tmux ) em vez do navegador de arquivos padrão para selecionar um arquivo para anexar a um email?
Respostas:
Você pode abrir o ranger em uma divisão do tmux (uma possibilidade sugerida), selecionar o arquivo a ser anexado, copiar o nome do arquivo com o caminho usando yp
e, em seguida, retornar à janela de anexação do mutt, pressionar a
e colar o caminho e o nome do arquivo no diretório linha que se abre na parte inferior da janela de conexão e pressione Enter
.
Com relação à questão de espaços no nome do arquivo (em resposta ao comentário de @Rastapopolous), percebi que tenho um forte hábito de não usá-los, mas testando novamente o método acima para colar o caminho do guarda florestal, acho que quando o nome do arquivo possui espaços, por alguma razão, o nome do anexo colado no mutt tem uma repetição de parte do nome anexada! Pode-se retroceder para remover o "apêndice" e o anexo é prontamente enviado, mesmo com os espaços não escapados. Testei a cópia do caminho do ranger no vim e cola corretamente, mas não no vira-lata.
Como eu costumo usar o tmux, acho esse método relativamente simples.
Como alternativa e independentemente do tmux, também tenho o seguinte script no meu .bashrc:
# email an attachment
function mail_attach ()
{
mutt -F ~/.muttrc -a "$@" -- myemail@gmail.com;
}
export -f mail_attach
Isso é útil quando você sabe que irá anexar antes de escrever um email. Portanto, de dentro do ranger, basta selecionar um arquivo, digitar s
para abrir uma linha de comando do shell e indicar o arquivo selecionado com %f
, ou seja:
:shell mail_attach %f
Pressionar Enter
abrirá o editor de mutt para compor um email que já possui o arquivo selecionado anexado. No entanto, é necessário alterar o endereço de email do destinatário para o desejado. Talvez haja uma maneira de alterar a função para abrir o editor de email com um campo "Para" em branco, mas não sei o suficiente. No entanto, eu não acho isso um grande negócio.
Para vários arquivos, se eles estiverem na mesma pasta, eu os seleciono todos e, em seguida, pressione @
qual é um atalho de guarda florestal para abrir a linha de comando do shell como esta, onde %s
há uma referência aos arquivos selecionados:
:shell %s
Em seguida, basta inserir mail_attach
antes %s
e pressionar Enter para abrir o mutt para compor o email que já possui todos os arquivos selecionados. Se você deseja anexar arquivos de pastas diferentes, não sei como fazer isso além de reuni-los na mesma pasta.
Gostaria de dar crédito a quem criou a função, mas não sei mais de onde ela veio. Eu sei que não fui eu.
:shell mutt -a %f
diretamente a partir de ranger
.
A resposta de @ John Flood me inspirou a pensar um pouco mais sobre isso, e eu vim com a seguinte solução alternativa, que parece funcionar muito bem.
Salve o script a seguir como mutt_attach
em algum lugar $PATH
, com o Return
caractere alfabético em vez de ^M
(em vim
, isso é alcançado pressionando <c-v><Return>
no modo de inserção).
#!/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"
Em .muttrc
, defina
macro compose \CA "!mutt_attach\n"
Agora, se você abrir mutt
no primeiro painel da janela Email
em uma tmux
sessão chamada email
(criada com, por exemplo, o comando tmux new -s email
. A especificação da sessão, janela e painel é conveniente principalmente para fins de depuração) e pressionar Control+A
no menu de composição, vifm
abrirá no choose-files
modo , e o arquivo selecionado será anexado automaticamente.
Melhor ainda, isso permite que você marque vários arquivos vifm
usando t
(ou modo visual) e ranger
usandoSpace
e anexe todos eles ao mesmo tempo!
EDIT : notei que o código não funciona para nomes de arquivos que contêm espaços em branco, pois parece impossível digitar um espaço no menu de composição de anexos na minha versão do mutt ... Aqui está uma solução alternativa (um pouco feia):
#!/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"