Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Vim中以读/写模式打开文件?_Vim - Fatal编程技术网

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

如何在Vim中以读/写模式打开文件?,vim,Vim,我的计算机上有一个特定的文件,Vim坚持以只读模式打开。我检查了文件的权限(我有完全控制权),如果我检查了:w!,写得很好。但是,无论我使用:e还是从NERDTree打开文件,该文件都将以只读方式打开。我打开的所有其他文件都可以正常工作 我只是想知道如何在打开文件之前或之后关闭该文件的只读模式 我在Windows上,使用gVim 编辑: 这可能不是权限问题,因为:w!工作正常。只需使用:w!强制写入文件即可!。您应该是金色的文件中可能有vim设置,以使文件加载为只读: 检查以下行:(替换文件的注

我的计算机上有一个特定的文件,Vim坚持以只读模式打开。我检查了文件的权限(我有完全控制权),如果我检查了:w!,写得很好。但是,无论我使用:e还是从NERDTree打开文件,该文件都将以只读方式打开。我打开的所有其他文件都可以正常工作

我只是想知道如何在打开文件之前或之后关闭该文件的只读模式

我在Windows上,使用gVim

编辑:
这可能不是权限问题,因为:w!工作正常。

只需使用:w!强制写入文件即可!。您应该是金色的

文件中可能有vim设置,以使文件加载为只读:

检查以下行:(替换文件的注释字符,而不是//)

//vim:设置ro:


Vim在文件的前5行或后5行中查找这些设置。

您是否尝试过:右键单击->属性->查看是否选中了“只读”属性?

让您烦恼的模式由只读选项控制。要清除它,请键入
:set readonly一旦启动编辑器。

实际上,这可能是一个权限问题

我刚刚用管理员权限在XP上遇到了这个问题。 在使文件可写(readonly属性清除,cygwin相应地将其显示为可写)之后,VIM仍然将其显示为只读

在我的情况下,该问题处于高级权限下。 在Windows资源管理器下查看该文件,右键单击以获取属性,在“常规”选项卡下,只读位是清除的。现在转到安全选项卡,它显示我只有读取权限。单击“权限”选项卡下的“高级”按钮,选中“我的用户帐户”,它显示我具有未从任何位置继承的特殊权限,而不是从包含目录继承的“完全控制”,就像我看到的其他文件一样

一个修复方法是单击编辑。。。在“权限”选项卡中编辑权限。但是,只执行以下操作要简单得多(至少在您拥有管理员权限的情况下):w!正如其他人所建议的那样,在VIM中。这将文件的权限固定为可写(“完全控制”)


(我不清楚这个特定文件是如何以这种“特殊”只读状态结束的。将其保留在您的问题范围之外。)

添加到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

灵感来自:

解决方案非常简单,只有当您没有用户的写入权限时才会发生这种情况

转到终端并输入以下命令:

1] chmodu+wx文件名
filename是您试图编辑的文件名。

他已经说过他可以做得很好,但他只是不想这样做。:)我不知道您正在运行哪个特定的Windows操作系统,但是如果您在Vista/Win7上,您是否尝试过以管理员身份运行gVim(右键单击并选择以管理员身份运行),然后查看在尝试保存文件时会发生什么情况?它是什么类型的文件?它在哪里?用户目录中的某些文件位置将以只读方式打开,并且w!戴夫:我在XP上,很遗憾,我不能以管理员的身份运行,因为我在工作。请看,文件中似乎没有这样一行。但我不知道你可以和vim一起做。