我正在使用Perforce,默认情况下,我客户端中的所有文件都是只读的。因此,当我浏览vim缓冲区中的源代码时,也会将其标记为只读(可能这不是一个准确的措辞:我可以编辑其内容,但不能在没有'!' )。在某些时候,我开始做一些编辑,发现我必须在Perforce中签出文件。我有一个很好的'命令:
command PE !p4 edit %
但是在完成后,vim为我提供了选择:
当然我可以通过:set noro
手动更改RO,但显然希望避免这种情况。
目前我已将其添加到上面的PE
命令中,但这并没有检查文件的实际状态,因此似乎有点危险:
command PE !p4 edit % | set noro
我真正想要的是" true"同步磁盘上的文件和vim中的缓冲区之间的只读状态。
UPD:神奇地说,最后一个版本开箱即用 - 如果p4 edit
失败,则不会删除缓冲区上的RO状态。没有想法它是如何工作的......
答案 0 :(得分:1)
Vim有一个filewritable()
功能来查询文件的访问状态,为什么不使用它?
command PE execute '!p4 edit %' | let &readonly = !filewritable(expand('%'))