我的电脑上有一个特定文件,Vim坚持以只读模式打开。我检查了文件的权限(我有完全控制权),如果我这样做:w!,写入就好了。但是,无论是使用以下命令打开文件还是使用NERDTree,文件都会以只读方式打开。我打开的所有其他文件都可以正常工作。
我只是想知道如何在打开它之前或之后关闭此文件的readonly模式。
我在Windows上,使用gVim
编辑: 它可能不是权限问题,因为:w!工作得很好。
答案 0 :(得分:7)
令你讨厌的模式由readonly选项控制。要清除它,请在启动编辑器后输入:set readonly!
。
答案 1 :(得分:3)
实际上,可以是权限问题。
我刚刚使用管理员权限在XP上遇到这种情况。 在使文件可写(readonly属性清除,cygwin相应地将其显示为可写)之后,VIM仍然将其显示为只读。
就我而言,问题出在高级权限下。 在Windows资源管理器的文件下查看,右键单击以获取“属性”,在“常规”选项卡下,只读取位清除。现在转到“安全”选项卡,它显示我只有读取权限。单击“权限”选项卡下的“高级”按钮,选择了我的用户帐户,它显示我没有从任何地方继承的特殊权限,而不是从我在其他文件中看到的包含目录继承的“完全控制”。
一种解决方法是单击“编辑...”以在“权限”选项卡中编辑权限。但是,它更简单(至少在您拥有管理员权限的情况下)只需:w!正如其他人所建议的那样。这会将文件的权限修复为可写(“完全控制”)。
(我不清楚这个特殊文件是如何以“特殊”只读状态结束的。将其留在你的问题范围之外。)
答案 2 :(得分:1)
添加到vimrc中的以下内容将导致vim在编辑后将文件更改为只读。它的工作原理是调用windows attrib
工具
"Change read/only files to read/write when they are edited
au FileChangedRO * !start attrib -r %
au FileChangedRO * :let s:changedRO = 1
au FileChangedRO * :set noro
"Don't ask about the modified read-only file
au FileChangedShell * call s:HandleChangedROFile()
function s:HandleChangedROFile()
if exists('s:changedRO') && s:changedRO == 1
let s:changedRO = 0
let v:fcs_choice='reload'
else
v:fcs_choice='ask'
endif
endfunction
灵感来自:http://vim.wikia.com/wiki/Setting_file_attributes_without_reloading_a_buffer
答案 3 :(得分:0)
可能文件中有vim设置使文件加载为只读:
检查以下行:(替换文件的注释字符而不是//)
// vim:set ro:
Vim在文件的第一行或最后5行中查找这些设置。
答案 4 :(得分:0)
您是否尝试过:右键单击 - >属性 - >看看是否检查了'readonly'属性?
答案 5 :(得分:0)
解决方案非常简单,只有当您没有作为用户的写入权限时才会发生这种情况。
转到终端并输入以下命令:
1] chmod u + wx filename filename是您尝试编辑的文件的名称。
答案 6 :(得分:-2)
只需使用以下命令强制写入文件:w!。你应该是金色的