Answers:
我找到了解决方案。设置nomodifiable
可防止文件被编辑(在帮助窗口中使用)。我创建了一个简单的函数来设置或取消设置(modifiable
取决于是否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