+x
작성하는 동안 스크립트에 비트 를 설정하는 방법이 있습니까?
예를 들어 다음을 실행합니다.
vim -some_option_to_make_file_executable script.sh
저장 후 추가 이동없이 파일을 실행할 수 있습니다.
추신. 콘솔 자체에서 실행 하거나 콘솔 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에서 Max Ischenko의 모든 크레딧
답변
MacVim Custom Version 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
@StevieD도 같은 대답을했지만 https://bbs.archlinux.org/viewtopic.php?id=126304 에서 답변을 찾았습니다 .