是否可以进入一种模式,在这种模式下,Vim将允许查看文件,但阻止进行更改的任何选项?
#1 楼
我找到了解决方案。设置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
#2 楼
将此添加到您的.vimrc中:autocmd BufRead * let &l:modifiable = !&readonly
评论
这建立在@ZeroKelvinKeyboard的答案上,仅影响当前缓冲区。
– s4y
16年11月11日在21:58
#3 楼
尽管以上答案是正确的,但还有另一件事要考虑:只要文件是“只读”的,除非您是文件的所有者或有权使该文件可写。即使这样,除非您用“:w!”显式覆盖“ read-only”状态,否则vim不会将更改写入文件。如果您实际上可以编辑应该删除的文件,为只读,您可能需要重新检查权限,可能存在安全性错误配置。如果仅使vim无法编辑文件,则其他编辑方式仍然有效,因此,如果不更改文件,则应正确设置权限。在Windows中,可以通过明确拒绝所有人的更改权限来强制文件为只读;在Linux中,可以使用“不可变”扩展属性(chattr + i)。
评论
对不起,如果我不太清楚。这个问题不是关于意外更改只读文件的;我想阻止自己编辑我没有写访问权的文件的缓冲区。有时我不小心以常规用户而不是root用户打开系统配置文件。在这种情况下,我没有对该文件的写访问权,因此该缓冲区显示为只读,但Vim仍然允许我编辑该缓冲区。当我尝试保存时,因为没有写访问权限,所以无法保存。在这种情况下,我希望Vim阻止对缓冲区的更改。
–ZeroKelvinKeyboard
2015年6月1日13:52
知道了我的想法是,您希望将此作为故障保护。然后无视我的回答:)
– mikky
2015年6月1日18:34
OP意味着当一个人在OS中打开一个非只读文件,但他/她当前不希望(或认为适当)进行更改,并且希望限制自己不要这样做时。我的想法完全一样,因此请从Google出发!
–硫蛋白
16 Dec 27'9:44
评论
您可以通过执行以下操作使其更短:let&modifiable =!&readonly
–马丁·图尔诺伊(Martin Tournoij)
2015年5月29日在9:10
@Carpetsmoker更好地是一个班轮,谢谢!但是仍然必须是:autocmd BufRead * let&modifiable =!&readonly
–ZeroKelvinKeyboard
2015年5月29日15:11
这样,在打开一个只读文件然后创建一个新缓冲区后,新缓冲区最终将无法修改。
–普莱克斯
15年7月24日在5:13
感谢您指出这一点,我没有注意到。我不确定如何测试新的缓冲区。
–ZeroKelvinKeyboard
15年7月24日在7:22
@Praxeolitic:我刚刚发布了一个答案,应该解决这个问题,让我知道它是否有效。
– s4y
16年11月11日在22:16