Usar seletor de arquivo alternativo no mutt


Respostas:


2

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 ae 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 spara abrir uma linha de comando do shell e indicar o arquivo selecionado com %f, ou seja:

:shell mail_attach %f

Pressionar Enterabrirá 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 %shá uma referência aos arquivos selecionados:

:shell %s

Em seguida, basta inserir mail_attachantes %se 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.


Obrigado pela sua resposta! Acabei de publicar um método alternativo, um pouco mais simplificado, que você pode achar interessante.
Rastapopoulos

Muito obrigado pela alternativa, no entanto, acho que sou muito casada com o ranger e, ao mesmo tempo, não tenho as habilidades necessárias para adaptar seu script ao ranger!
John Flood

Eu adaptei o script que publiquei para o ranger. A única desvantagem é que parece não funcionar para nomes de arquivos com espaços neles. (É apenas minha versão de vira-lata, ou é impossível escrever um <espaço> personagem do 'Anexar arquivo' menu compor?
Roberto Rastapopoulos

Bom truque, e você também pode fazer :shell mutt -a %fdiretamente a partir de ranger.
Rastapopoulos

1
Sua explicação sobre o "caractere de retorno literal" fez o truque! Seu script original agora funciona para mim. Obrigado @Rastapopoulos!
John Flood

1

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_attachem algum lugar $PATH, com o Returncaractere 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 muttno primeiro painel da janela Emailem uma tmuxsessã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+Ano menu de composição, vifmabrirá no choose-filesmodo , e o arquivo selecionado será anexado automaticamente.

Melhor ainda, isso permite que você marque vários arquivos vifmusando t(ou modo visual) e rangerusandoSpace 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"
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.