Para o vim, você tem scripts poderosos disponíveis. Por exemplo, no meu .vimrc, eu tenho:
" Stolen from http://www.debian-administration.org/articles/571
" Sets +x on stuff starting with the magic shebang.
au BufWritePost * if getline(1) =~ "^#!" | silent !chmod a+x <afile>
Se você quiser fazer isso apenas pelo nome do arquivo, em vez de procurar pelo #! linha, você poderia fazer:
au BufWritePost *.ext silent !chmod a+x <afile> " untested
Esse artigo sobre Administração Debian também tem instruções para o EMACS.