作成中にスクリプトに+x
ビットを設定する方法はありますか?
たとえば、私は実行します:
vim -some_option_to_make_file_executable script.sh
保存後、追加の移動なしでファイルを実行できます。
ps。 chmod
はvim
から、またはコンソール自体からでも実行できますが、これは少し煩わしいため、vim
はファイルをリロードするように提案します。また、毎回chmod
コマンドを入力するのは面倒です。 pps。ファイル拡張子に応じて作成すると便利です(実行可能ファイル.txt
:-)は必要ありません)
これをどこで見つけたか思い出せませんが、〜/ .vimrcで次のものを使用しています
" Set scripts to be executable from the Shell
au BufWritePost * if getline(1) =~ "^#!" | if getline(1) =~ "/bin/" | silent !chmod +x <afile> | endif | endif
最初の行が「#!」で始まる場合、コマンドは実行可能ビットを自動的に設定します。または「/ bin /」が含まれています。
このスクリプト で http://vim.wikia.com を見つけました。完璧な解決策ではありませんが、許容できる解決策だと思います。
function! SetExecutableBit()
let fname = expand("%:p")
checktime
execute "au FileChangedShell " . fname . " :echo"
silent !chmod a+x %
checktime
execute "au! FileChangedShell " . fname
endfunction
command! Xbit call SetExecutableBit()
コマンド:Xbit
で実行ビットを設定できるようになりました。 vim.wikia.comのMaxIschenkoへのすべてのクレジット
MacVimカスタムバージョン8.0.648(134)でこれを使用します
" if file is executable just exit
au BufWritePost *.sh if FileExecutable("%") | if getline(1) =~ "^#!" | silent !chmod u+x % | endif | endif
" Determines if file is already executable
function! FileExecutable(fname)
execute "silent! ! test -x" a:fname
return v:Shell_error
endfunction
tonymacの回答が(VIM 7.4を使用して)ある時点で機能しなくなり、@ StevieDと同じ問題が発生しました。これを変更すると問題が解決しました:
au BufWritePost * if getline(1) =~ "^#!" | if getline(1) =~ "/bin/" | silent execute "!chmod +x <afile>" | endif | endif
https://bbs.archlinux.org/viewtopic.php?id=126304 から回答を見つけましたが、@ StevieDも同じ回答を示しました。