With mutt, by default one edits email and then when you're done composing, you add your attachments. This sucks because I will occasionally automatically send the message before attaching anything since 99% of all my emails don't have an attachment.

To fix this, mutt allows you to add the pseudo-header(s) 'Attach:' to an email to include an email when you're composing an email. You just need the following in your muttrc:

edit_headers=yes

However, if you use vim, you probably have autoformat turned on for emails and when you edit headers, it mangles them. One way around this is to tell vim to treat headers like comments indicators so they have to line up nicely. Since the first one is always at the begining of the line, this works nicely and just requires the relevant vim config below.

autocmd FileType mail setlocal tw=72 formatoptions=tcqla nosi
autocmd FileType mail setlocal comments=:Attach\:,:From\:,:To\:,:Bcc\:,:Cc\:,:Bcc\:,:Subject\:,:Reply-To\:,:In-Reply-To\:,:>