VIM으로 새 파일을 작성할 때 권한 비트 유지 해당 파일

Vim에서을 사용하여 현재 버퍼의 사본을 새 파일 :w [filename]에 쓰면 Vim 이 새 파일에 대한 기본 (즉, umask 또는 기타로 설정) 파일 권한을 사용하는 것으로 보입니다. 그러나 현재 파일이 기존 파일에서로드 된 경우 “올바른”동작이 해당 파일 의 권한을 복제하지 않아야 합니까? 예를 들어, 실행 파일을 편집하고 파일의 새 사본을 작성하는 경우 Vim이 새 실행 파일을 작성하지 않는 이유는 무엇입니까? Vim ! chmod --reference % [newfilename]이 새 파일을 작성한 후 와 같은 작업을 수행하는 것 외에 내가 설명하는 방식대로 작동하도록 할 수 있습니까?



답변

이런 식으로 할 수 있습니다. 먼저 원본 파일의 이름을 캡처하십시오.

au BufRead * let b:oldfile = expand("<afile>")

그런 다음 새 파일을 저장할 때 해당 권한을 원본 파일의 권한과 동일하게 변경하십시오.

au BufWritePost * if exists("b:oldfile") | let b:newfile = expand("<afile>") | if b:newfile != b:oldfile | echo system("chmod --reference=".b:oldfile." ".b:newfile) | endif |endif

두 자동 명령을 ~ / .vimrc에 넣으십시오.


답변

파일에 저장되지 않은 변경 사항이 없는지 확인한 후 cp사본을 작성하는 데 사용하십시오. 원본과 동일한 권한을 가진 사본이 생성됩니다.


답변