如何在Vim中将文件设置为可写?

4

我经常打开只读文件,我想知道是否有办法在 Vim 中使它们可写。 我不是:w!命令,我需要关闭 Vim 后文件仍然可写。

7个回答

5

很遗憾,如果我已经编辑了文件,vim将会想重新加载磁盘上的原始文件。 - sjf

4
问题在于,改变文件属性后,Vim会检测到并尝试重新加载文件,导致您输入的内容丢失。
最好的方法似乎是创建一个函数,重新定义autocmd FileChangedShell,以便在检测到属性更改时不执行任何操作。
请参见在不重新加载缓冲区的情况下设置文件属性的示例,其中提供了一个示例,用于使所有文件可执行。
这应该能解决您的问题。

2
我在其他地方找到了这个解决方案:
 :set readonly!
 :set modifiable

我的情况是使用命令行将文件的权限改为chmod 777,然后用vim打开时,却只能以只读模式打开。不确定这是否对您有帮助...

编辑:我忘记了第二个命令。只有两个命令的组合才有效。


1

你可以使用 :! 命令来执行 shell 命令。因此,你可以使用 :!chown myusername filename 来更改用户,或者使用例如 :!chmod o+w filename 更改访问权限。


1
此外,如果该文件仅可被另一个用户写入(而您不是所有者,因此无法使用chmod更改权限),则可以映射此命令:
:command SuWrite %!sudo tee %

当然,对于其他用户使用sudo -u用户名


0
你可以使用vim-eunuch插件中的SudoWrite命令,即使你忘记用sudo打开vim,也能让你以sudo身份写入文件。这是消除忘记时的烦人行为的好方法。

0

!sudo chmod 777%

当它询问是否要使用缓冲区时,输入“O”表示确定。


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