如何在Vim中以读/写模式打开文件?

时间:2010-09-02 15:39:12

标签: vim

我的电脑上有一个特定文件,Vim坚持以只读模式打开。我检查了文件的权限(我有完全控制权),如果我这样做:w!,写入就好了。但是,无论是使用以下命令打开文件还是使用NERDTree,文件都会以只读方式打开。我打开的所有其他文件都可以正常工作。

我只是想知道如何在打开它之前或之后关闭此文件的readonly模式。

我在Windows上,使用gVim

编辑: 它可能不是权限问题,因为:w!工作得很好。

7 个答案:

答案 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!。你应该是金色的