回答:
vimの場合、強力なスクリプトを使用できます。たとえば、私の.vimrcでは、次のようにしています。
" 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>
#!を探すのではなく、ファイル名のみで実行したい場合。行、あなたは行うことができます:
au BufWritePost *.ext silent !chmod a+x <afile> " untested
Debian管理に関するその記事には、EMACS に関する説明もあります。
derobertの回答が好きなだけで、VIMから次の警告が出ます。
W16:警告:ファイル「test.sh」のモードが編集の開始後に変更されました
次の(やや長い)コードはその問題を解決します(Python対応のvimが必要です)。
function! SetExecutableBit()
python <<EOD
import vim
import os
import stat
filename = vim.current.buffer.name
mode = os.stat(filename).st_mode
os.chmod(filename, mode | stat.S_IXUSR)
EOD
endfunction
autocmd BufWritePost *
\ if getline(1) =~ "^#!" | call SetExecutableBit()
autoread
設定したのでおそらく私はその警告を受けません。