vim : + x 비트로 파일 생성 실행 하거나 콘솔

+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 에서 답변을 찾았습니다 .


답변