Answers:
对于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
设定的那样收到警告。