如何从Vim中的只读模式退出?


38

我以只读模式打开文件;有没有办法摆脱只读模式?


只读模式的哪些限制困扰着您?即使只是以只读方式打开文件,如果您只是要写入文件,那么可以像在Michael所说的那样!w命令中添加a 即可。
Bananguin

1
@ user1129682只是在w我每次要保存后记得带一个感叹号而带来的不便。嘿
错误用户名

Answers:


43

您可以这样做:

:set noro

这样会取消设置只读标志,但是如果基础文件仍然不能被您写入,则vim仍将无法对其进行写入。


如何扭转这种情况,回到只读状态?
路易斯·洪

2
@LouisHong很容易::set ro
菲利普·基恩斯

1
如果您使用打开一个可写文件,view然后决定对其进行编辑,则这是完美的选择。
Wisbucky

9

您可以chmod在vim中运行:

:!chmod +w %

!表示运行shell命令,它%是当前文件名。您还可以强制文件写入:

:w!

3

除了Michael Mrozek的答案之外,您还可以在行中添加一行,以.vimrc允许您写入被忽略以提升的权限打开的文件:

" Allows writing to files with root priviledges
cmap w!! w !sudo tee % > /dev/null

如果文件是只读的,则只需输入:w!!,系统将提示您输入密码,然后文件将被成功写入。


2

:set noro执行此工作时,它不会检查文件是否由另一个vim实例打开或是否在外部更改文件时更新文件。

为了使其可编辑并检查交换文件(这是使用vim打开文件的默认设置),只需使用edit命令(:help edit):

:e

注意,如果文件从那以后(甚至在vim之外)都被操纵过,它将更新当前缓冲区中的更改(我通常希望这样做)。


1

我走了,尽管有些迟了,但也许您已经解决了您的疑问;)我在任何评论中都没有看到我对vim有所了解的方式,因此,我添加了它:

编辑文件后,按:w:wq,然后看到令人讨厌的消息“ E45'readonly'选项已设置(添加!覆盖)

设置了E45只读选项(添加!以覆盖)

您可以输入

:w !sudo tee %

w!sudo三通%

  • w 写缓冲区,
  • !sudo 用sudo调用shell,
  • teevim :w使用tee将输出重定向到输出,并且
  • % 是当前文件名

这应该可以解决问题。注意,这将提示您重新加载vim中的文件,因为您必须按L

在此处输入图片说明

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.