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

6
我的电脑上有一个特定的文件,Vim 始终坚持以只读模式打开它。我检查了文件的权限(我拥有完全控制权),如果我使用 :w!,写入也可以正常进行。然而,无论是用 :e 还是从 NERDTree 打开文件,该文件都会以只读模式打开。我打开的所有其他文件都可以正常工作。
我只想知道如何在打开文件之前或之后关闭只读模式。
我正在使用 gVim,并且在 Windows 上运行。
编辑: 这可能不是权限问题,因为 :w! 可以正常工作。

1
我不知道你正在使用哪个具体的Windows操作系统,但如果你使用的是Vista/Win7,你是否尝试以管理员身份运行gVim(右键单击并选择以管理员身份运行),然后在尝试保存文件时会发生什么? - Dave
它是什么类型的文件?它在哪里?用户目录中的某些文件位置将以只读方式打开,甚至w!也无法工作。 - Jess
@Dave:我使用的是XP系统,但很遗憾,由于我在办公室,无法以管理员身份运行。 - Tom McJones
请查看以下链接:https://dev59.com/llwY5IYBdhLWcg3waXEF - A. Nikitin
7个回答

8

让你感到烦恼的模式由readonly选项控制。启动编辑器后,输入:set readonly!即可清除它。


2

实际上,可能是权限问题。

我刚在XP上遇到这种情况,拥有管理员权限。 将文件设置为可写(只读属性清除,cygwin相应地显示为可写),VIM仍然显示为只读。

在我的情况下,问题出现在高级权限中。 在Windows资源管理器下查看文件,在常规选项卡下只读位被清除。现在转到安全选项卡,它显示我只有读取权限。点击高级按钮,在权限选项卡下选择我的用户账户,它显示我拥有特殊权限,没有从任何地方继承,而不是像其他文件那样从包含目录继承“完全控制”。

一个解决方法是单击编辑...以在权限选项卡中编辑权限。然而,更简单的方法(至少在您拥有管理员权限的情况下)是按照其他人建议的在VIM中执行:w!。这将修复文件的权限以使其可写(“完全控制”)。

(我不清楚这个特定文件是如何处于这种“特殊”的只读状态的。将其留给您自己思考。)


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


-1
你试过了吗:右键 -> 属性 -> 看看是否选中了“只读”属性?

-1

解决方案非常简单,只有当您作为用户没有写入权限时才会出现此问题。

打开终端并输入以下命令:

1] chmod u+wx 文件名 文件名是您要编辑的文件的名称。


-1

只需使用 :w! 强制写入文件即可。你应该一切正常。


1
他已经说过他可以很好地做到那一点,但他只是不想这样做。 :) - Dave

-1
也许有一个vim设置可以使文件以只读方式加载:
检查是否有类似以下的行:(将您的文件的注释字符替换为//)
// vim:set ro:
Vim在文件的前5行或后5行中寻找这些设置。

1
文件中似乎没有这样的行。不过我不知道你可以用vim做到这一点。 - Tom McJones

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接