Vim을 사용하여 읽기 전용 파일을 편집하는 경우 처음 편집 할 때 경고 만 표시하지만 변경이 가능합니다. 이 동작은 다른 이름으로 파일을 저장하려는 사람에게 유용 할 수 있습니다. 그러나 때로는 쓰기 권한이없는 파일을 연 다음 잊어 버리고 변경합니다.
Vim이 파일을 볼 수있는 모드로 들어갈 수 있지만 변경하는 옵션은 차단할 수 있습니까?
Vim을 사용하여 읽기 전용 파일을 편집하는 경우 처음 편집 할 때 경고 만 표시하지만 변경이 가능합니다. 이 동작은 다른 이름으로 파일을 저장하려는 사람에게 유용 할 수 있습니다. 그러나 때로는 쓰기 권한이없는 파일을 연 다음 잊어 버리고 변경합니다.
Vim이 파일을 볼 수있는 모드로 들어갈 수 있지만 변경하는 옵션은 차단할 수 있습니까?
답변:
해결책을 찾았습니다. 설정 nomodifiable
하면 파일이 편집되지 않습니다 (도움말 창에서 사용됨). modifiable
if readonly
가 설정되어 있고 autocmd에 첨부되어 있는지에 따라 설정하거나 설정 해제하는 간단한 기능을 만들었습니다 .
" Don't allow editing of read only files
autocmd BufRead * call RONoEdit()
function! RONoEdit()
if &readonly == 1
set nomodifiable
else
set modifiable
endif
endfunction
autocmd BufRead * let &modifiable = !&readonly
readonly
파일을 연 다음 새 버퍼를 만든 후에 새 버퍼가 종료됩니다 nomodifiable
.
위의 답변이 정확하면 고려해야 할 또 다른 사항이 있습니다. 파일이 "읽기 전용"인 경우 파일 소유자가 아니거나 파일 소유자가 아닌 한 파일 내용을 변경할 수있는 방법이 없어야합니다. 해당 파일을 쓰기 가능하게 할 권리가 있습니다. 그리고 ": w!"로 "읽기 전용"상태를 명시 적으로 재정의하지 않으면 vim은 파일에 변경 사항을 쓰지 않습니다.
실제로 읽기 전용으로되어있는 파일을 편집 할 수 있으면 권한을 다시 확인하고 보안 구성이 잘못되었을 수 있습니다. vim에서 파일을 편집 할 수없는 경우에도 다른 편집 방법이 그대로 유지되므로 파일을 변경하지 않을 경우 권한이 올바르게 설정되어 있어야합니다. Windows에서는 모든 사람에 대한 변경 권한을 명시 적으로 거부하여 파일을 읽기 전용으로 만들 수 있습니다. Linux에서는 "불변"확장 속성 (chattr + i)을 사용할 수 있습니다.
let &modifiable = !&readonly